This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| c_sharp_vs_java [2015/06/08 06:57] – [Func Delegate] ledyx | c_sharp_vs_java [2021/02/07 04:22] (current) – [C# vs Java] ledyx | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| = C# vs Java = | = C# vs Java = | ||
| - | {{tag>C-Sharp | + | {{tag>C# Java}} |
| <fs 25px> | <fs 25px> | ||
| Line 25: | Line 25: | ||
| == Primitive Types == | == Primitive Types == | ||
| + | * C#은 모든 Type이 객체! | ||
| * Java는 모든 Data Type이 부호 있는(Signed) 수이다. 그에 반해 C#은 부호 없는(unsigned) 수를 지원한다! | * Java는 모든 Data Type이 부호 있는(Signed) 수이다. 그에 반해 C#은 부호 없는(unsigned) 수를 지원한다! | ||
| * byte는 signed를 지원한다. | * byte는 signed를 지원한다. | ||
| + | |||
| ^ Data Type ^ Size | ^ Data Type ^ Size | ||
| Line 36: | Line 38: | ||
| * Java와 마찬가지로 byte(1byte)를 지원하고, | * Java와 마찬가지로 byte(1byte)를 지원하고, | ||
| * 큰 수를 다루는 Type에 차이가 있다. (Java는 BigDecimal(32byte), | * 큰 수를 다루는 Type에 차이가 있다. (Java는 BigDecimal(32byte), | ||
| + | |||
| ^ Data Type ^ Size ^ Range ^ | ^ Data Type ^ Size ^ Range ^ | ||
| Line 64: | Line 67: | ||
| * Javascript와 같은 " | * Javascript와 같은 " | ||
| * object와는 다르다. | * object와는 다르다. | ||
| + | |||
| + | == enum == | ||
| + | === int to Enum === | ||
| + | * (MYENUM) Enum.ToObject(typeof(MYENUM), | ||
| + | * < | ||
| + | |||
| = Method 활용 = | = Method 활용 = | ||
| + | |||
| + | **기본적으로 Java와 동일하게 Method의 Argument로 전달되는 값은 <fc # | ||
| + | 단, C#은 키워드를 통해 Call by reference를 이용할 수 있다! | ||
| + | |||
| + | |||
| == 여러 개의 반환 값이 필요할 때 == | == 여러 개의 반환 값이 필요할 때 == | ||
| * 아래 두 방법 모두 Parameter로 넘긴 값을 반환 받지 않고도 저장 가능하다! | * 아래 두 방법 모두 Parameter로 넘긴 값을 반환 받지 않고도 저장 가능하다! | ||
| Line 500: | Line 514: | ||
| ===== Action Delegate ===== | ===== Action Delegate ===== | ||
| * **반환값이 __없는__** 경우 사용한다. | * **반환값이 __없는__** 경우 사용한다. | ||
| - | * 기본적으로 어떤 Generic Type을 갖지 않는다. (반환값이 없기 때문.) | + | * 기본적으로 어떤 Generic Type도 갖지 않는다. (반환값이 없기 때문.) |
| <sxh csharp> | <sxh csharp> | ||
| Line 523: | Line 537: | ||
| Console.WriteLine(result+" | Console.WriteLine(result+" | ||
| }; | }; | ||
| - | |||
| act2(10, | act2(10, | ||
| } | } | ||
| Line 533: | Line 546: | ||
| ==== Expression Tree (식 트리) ==== | ==== Expression Tree (식 트리) ==== | ||
| + | * Code를 **Data**로 보관 가능. | ||
| + | * 파일에 저장 | ||
| + | * Network를 통해 다른 Process에 전달 | ||
| + | * Database Server에 보내어 실행 => [[#LINQ (Language INtegrated Query) | LINQ]] | ||
| Line 1303: | Line 1320: | ||
| { | { | ||
| Console.WriteLine(d(a, | Console.WriteLine(d(a, | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | === Event === | ||
| + | * 객체에 일어난 사건 알리기. Delegate의 주 용도. | ||
| + | |||
| + | <sxh csharp ; highlight: | ||
| + | using System; | ||
| + | |||
| + | namespace ConsoleApplication2 | ||
| + | { | ||
| + | delegate void onClick(string what); | ||
| + | |||
| + | class Program | ||
| + | { | ||
| + | //event EventType EventName | ||
| + | public event onClick myClick; | ||
| + | |||
| + | public static void Main(string[] args) | ||
| + | { | ||
| + | Program main = new Program(); | ||
| + | TestDelegate td = new TestDelegate(); | ||
| + | |||
| + | onClick deleMethod1 = new onClick(td.MouseClick); | ||
| + | onClick deleMethod2 = new onClick(td.KeyBoardClick); | ||
| + | |||
| + | //Event += Delegate | ||
| + | main.myClick += deleMethod1; | ||
| + | main.myClick += deleMethod2; | ||
| + | |||
| + | main.myClick(" | ||
| + | } | ||
| + | } | ||
| + | |||
| + | public class TestDelegate | ||
| + | { | ||
| + | public void MouseClick(string what) | ||
| + | { | ||
| + | Console.WriteLine(" | ||
| + | } | ||
| + | |||
| + | public void KeyBoardClick(string what) | ||
| + | { | ||
| + | Console.WriteLine(" | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | <sxh csharp ; highlight: | ||
| + | /* Ver.1 */ | ||
| + | using System; | ||
| + | |||
| + | namespace ConsoleApplication2 | ||
| + | { | ||
| + | delegate void sendMessage(string message); | ||
| + | |||
| + | class Program | ||
| + | { | ||
| + | public static event sendMessage sendMessageEvent; | ||
| + | |||
| + | public static void Main(string[] args) | ||
| + | { | ||
| + | Program.sendMessageEvent += Program_sendMessageEvent; | ||
| + | Program.sendMessageEvent(" | ||
| + | } | ||
| + | |||
| + | static void Program_sendMessageEvent(string message) | ||
| + | { | ||
| + | Console.WriteLine(message); | ||
| + | } | ||
| + | } | ||
| + | |||
| + | } | ||
| + | </ | ||
| + | |||
| + | <sxh csharp> | ||
| + | /* Ver.2 */ | ||
| + | using System; | ||
| + | |||
| + | namespace ConsoleApplication2 | ||
| + | { | ||
| + | class Program | ||
| + | { | ||
| + | public static void Main(string[] args) | ||
| + | { | ||
| + | MyEventManager.sendMessageEvent += MyEventManager_sendMessageEvent; | ||
| + | MyEventManager.SetOnSendMessage(" | ||
| + | } | ||
| + | |||
| + | static void MyEventManager_sendMessageEvent(string message) | ||
| + | { | ||
| + | Console.WriteLine(message); | ||
| + | } | ||
| + | } | ||
| + | |||
| + | class MyEventManager | ||
| + | { | ||
| + | public delegate void sendMessage(string message); | ||
| + | public static event sendMessage sendMessageEvent; | ||
| + | |||
| + | public static void SetOnSendMessage(string message) | ||
| + | { | ||
| + | if (sendMessageEvent != null) | ||
| + | sendMessageEvent(message); | ||
| } | } | ||
| } | } | ||
| Line 1356: | Line 1483: | ||
| == LINQ (Language INtegrated Query) == | == LINQ (Language INtegrated Query) == | ||
| + | * 선행 지식으로 [[# | ||
| + | * Collection(배열등 여러 자료구조)을 편리하게 다루기 위한 목적. (Read, Filtering, Sort, Merge, ...) | ||
| + | * from 절에서 **IEnumerable< | ||
| + | |||
| + | <sxh csharp> | ||
| + | using System; | ||
| + | using System.Linq; | ||
| + | |||
| + | namespace ConsoleApplication1 | ||
| + | { | ||
| + | class Program | ||
| + | { | ||
| + | static void Main(string[] args) | ||
| + | { | ||
| + | int[] numbers = { 99, 2, 55, 1, 3, 77, 30, 20}; | ||
| + | |||
| + | var result = | ||
| + | from n in numbers //어떤 집단? | ||
| + | where n % 2 == 0 //어떤 조건? | ||
| + | orderby n | ||
| + | select n; | ||
| + | |||
| + | foreach(int n in result) | ||
| + | Console.WriteLine(n); | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | |||
| = 명명법 = | = 명명법 = | ||
| Line 1361: | Line 1518: | ||
| = Visual Studio 2013 사용 Tip = | = Visual Studio 2013 사용 Tip = | ||
| + | |||
| # Eclipse처럼 Method 자동완성(Intelligence) 사용시 곧바로 자동 소괄호+매개 변수 설명을 보고싶다면 ** Visual Assist X**를 사용하면 된다. < | # Eclipse처럼 Method 자동완성(Intelligence) 사용시 곧바로 자동 소괄호+매개 변수 설명을 보고싶다면 ** Visual Assist X**를 사용하면 된다. < | ||
| # Eclipse의 **syso, Ctrl+Space**를 치면 **System.out.println()**이 자동생성되는 것처럼 VS에도 같은 기능으로 **코드 조각**이라는 기능이 있다. | # Eclipse의 **syso, Ctrl+Space**를 치면 **System.out.println()**이 자동생성되는 것처럼 VS에도 같은 기능으로 **코드 조각**이라는 기능이 있다. | ||
| * 예) cw, Ctrl+Space => Console.WriteLine(); | * 예) cw, Ctrl+Space => Console.WriteLine(); | ||
| * 더 많은 예시는 https:// | * 더 많은 예시는 https:// | ||
| + | |||
| = Eclipse vs Visual Studio (IDE 단축키) = | = Eclipse vs Visual Studio (IDE 단축키) = | ||
| + | |||
| |< | |< | ||
| ^ ^ Eclipse | ^ ^ Eclipse | ||
| Line 1371: | Line 1531: | ||
| ^ 자동 Interface & Abstract Class 요소 구현 | ^ 자동 Interface & Abstract Class 요소 구현 | ||
| ^ Method의 Argument 보기 | ^ Method의 Argument 보기 | ||
| - | ^ 코드 자동 정렬 | + | ^ 코드 자동 정렬 |
| ^ 줄 단위 Block | ^ 줄 단위 Block | ||
| ^ 주석\\ (< | ^ 주석\\ (< | ||