Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
c_sharp_vs_java [2015/06/08 07:39] – [LINQ (Language INtegrated Query)] ledyxc_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 Java}}+{{tag>CJava}}
  
 <fs 25px>**Java 개발자를 위한 C#!**</fs>\\ <fs 25px>**Java 개발자를 위한 C#!**</fs>\\
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    Range                     ^ ^  Data Type  ^  Size    Range                     ^
Line 36: Line 38:
   * Java와 마찬가지로 byte(1byte)를 지원하고, 공통적으로 char는 2byte이다.   * Java와 마찬가지로 byte(1byte)를 지원하고, 공통적으로 char는 2byte이다.
   * 큰 수를 다루는 Type에 차이가 있다. (Java는 BigDecimal(32byte), BigInteger(56bytes)가 존재)   * 큰 수를 다루는 Type에 차이가 있다. (Java는 BigDecimal(32byte), BigInteger(56bytes)가 존재)
 +
  
 ^  Data Type  ^  Size    ^  Range                     ^ ^  Data Type  ^  Size    ^  Range                     ^
Line 64: Line 67:
   * Javascript와 같은 "약한 Type 검사" 지원. 자동으로 컴파일러가 자동으로 데이터의 해당 형 변환.   * Javascript와 같은 "약한 Type 검사" 지원. 자동으로 컴파일러가 자동으로 데이터의 해당 형 변환.
   * object와는 다르다.   * object와는 다르다.
 +
 +== enum ==
 +=== int to Enum ===
 +  * (MYENUM) Enum.ToObject(typeof(MYENUM), INTVALUE);
 +  * <nowiki>((MYENUM[]) Enum.GetValues(typeof(MYENUM)))[INTVAULE];</nowiki>
 +
  
  
 = Method 활용 = = Method 활용 =
 +
 +**기본적으로 Java와 동일하게 Method의 Argument로 전달되는 값은 <fc #ff0000>__Call by value__</fc>이다!**
 +단, C#은 키워드를 통해 Call by reference를 이용할 수 있다!
 +
 +
 == 여러 개의 반환 값이 필요할 때 == == 여러 개의 반환 값이 필요할 때 ==
   * 아래 두 방법 모두 Parameter로 넘긴 값을 반환 받지 않고도 저장 가능하다!   * 아래 두 방법 모두 Parameter로 넘긴 값을 반환 받지 않고도 저장 가능하다!
Line 1306: Line 1320:
         {         {
             Console.WriteLine(d(a,b));             Console.WriteLine(d(a,b));
 +        }
 +    }
 +}
 +</sxh>
 +
 +
 +
 +
 +=== Event ===
 +  * 객체에 일어난 사건 알리기. Delegate의 주 용도.
 +
 +<sxh csharp ; highlight:[10,21,22]>
 +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("Hello"); //두 Method에 전달됨.
 +        }
 +    }
 +
 +    public class TestDelegate
 +    {
 +        public void MouseClick(string what)
 +        {
 +            Console.WriteLine("Mouse Click! " + what);
 +        }
 +
 +        public void KeyBoardClick(string what)
 +        {
 +            Console.WriteLine("KeyBoard Click! " + what);
 +        }
 +    }
 +}
 +</sxh>
 +
 +<sxh csharp ; highlight:[10,14,15]>
 +/* 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("Hello, World!");
 +        }
 +
 +        static void Program_sendMessageEvent(string message)
 +        {
 +            Console.WriteLine(message);
 +        }
 +    }
 +
 +}
 +</sxh>
 +
 +<sxh csharp>
 +/* Ver.2 */
 +using System;
 +
 +namespace ConsoleApplication2
 +{
 +    class Program
 +    {
 +        public static void Main(string[] args)
 +        {
 +            MyEventManager.sendMessageEvent += MyEventManager_sendMessageEvent;
 +            MyEventManager.SetOnSendMessage("Hello World!");
 +        }
 +
 +        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 1394: Line 1518:
  
 = Visual Studio 2013 사용 Tip = = Visual Studio 2013 사용 Tip =
 +
   # Eclipse처럼 Method 자동완성(Intelligence) 사용시 곧바로 자동 소괄호+매개 변수 설명을 보고싶다면 ** Visual Assist X**를 사용하면 된다. <del>(그런데 유료)</del>   # Eclipse처럼 Method 자동완성(Intelligence) 사용시 곧바로 자동 소괄호+매개 변수 설명을 보고싶다면 ** Visual Assist X**를 사용하면 된다. <del>(그런데 유료)</del>
   # 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://msdn.microsoft.com/ko-kr/library/z41h7fat.aspx 참조.     * 더 많은 예시는 https://msdn.microsoft.com/ko-kr/library/z41h7fat.aspx 참조.
 +
 = Eclipse vs Visual Studio (IDE 단축키) = = Eclipse vs Visual Studio (IDE 단축키) =
 +
 |<100%  20% 40% 40%>| |<100%  20% 40% 40%>|
 ^                                      ^  Eclipse              Visual Studio                                 ^ ^                                      ^  Eclipse              Visual Studio                                 ^
Line 1404: Line 1531:
 ^  자동 Interface & Abstract Class 요소 구현  |                (Header에 커서 두고)\\ Alt+Shift+F10  | ^  자동 Interface & Abstract Class 요소 구현  |                (Header에 커서 두고)\\ Alt+Shift+F10  |
 ^  Method의 Argument 보기              |  Ctrl+Space          |  Ctrl+Shift+Space                              | ^  Method의 Argument 보기              |  Ctrl+Space          |  Ctrl+Shift+Space                              |
-^  코드 자동 정렬                      |  Ctrl+Shift+F        |  Ctrl+Shift+F\\ Ctrl+Shift+D                   |+^  코드 자동 정렬                      |  Ctrl+Shift+F        |  Ctrl+K,                                                        |
 ^  줄 단위 Block                        Shift+↑/↓                                                         || ^  줄 단위 Block                        Shift+↑/↓                                                         ||
 ^  주석\\ (<nowiki>//</nowiki>       |  설정/해제 : Ctrl+/  |  (코드 바로 앞에) 설정 : Ctrl+K+C, 해제 : Ctrl+K+U\\ (줄 맨 앞에) 설정/해제 : /  | ^  주석\\ (<nowiki>//</nowiki>       |  설정/해제 : Ctrl+/  |  (코드 바로 앞에) 설정 : Ctrl+K+C, 해제 : Ctrl+K+U\\ (줄 맨 앞에) 설정/해제 : /  |
c_sharp_vs_java.1433749173.txt.gz · Last modified: (external edit)