Guest User

Untitled

a guest
Oct 12th, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.51 KB | None | 0 0
  1. [소개]
  2. C/C++을 참조한 언어, 닷넷 전용언어
  3. 약간 모든 언어의 짬뽕이라는 소리를 듣기도 한다.
  4.  
  5. [특징]
  6. 가비지 컬렉션 기능이 있다.
  7. 다중상속을 지원하지 않는다.
  8. 클래스간의 프렌드 지정을 할 수 없다.
  9. 디폴트 인수를 지원하지 않는다.
  10. 자료형에 대해 엄격하다.
  11. 자바에 JVM이 있다면 C#은 CLR(Common Language Runtime)에서 돌아간다.
  12. CLR이 중간 언어(MS IL)를 기계어로 번역해준다.
  13.  
  14. 오버라이딩 시 virtual 키워드를 붙여야한다.
  15.  
  16. 1. 프로퍼티(Property) = 속성
  17. 프로퍼티는 Get,Set을 손쉽게 만들 수 있는 방법(변수)이다. 함수 선언방식에서 ()만 빼면 프로퍼티 변수의 선언이다.
  18. 선언 부에 get {return ~; } set {~= value; } 이런식으로 선언한다.
  19. 자동 선언을 이용하려면 set; get; 이렇게 쓰면 됨.
  20.  
  21. 사용할때는
  22. 인스턴스.프로퍼티 명; //Get을 실행
  23. 인스턴스.프로퍼티 명 = 값; //Set을 실행
  24.  
  25. 객체 생성시에 손쉽게 프로퍼티 변수를 초기화 할 수 있으며 변수처럼 사용할 수 있다.
  26. (변수처럼 사용하는게 곧 Get을 호출하는것과 같으므로)
  27.  
  28. 2. 델리게이트(Deligate)
  29. 메서드를 변수로서 사용하기 위한 개념. (=함수 포인터) 메서드를 가리킬 수 있는 타입이다.
  30.  
  31. delegate로 선언한 타입이 메서드를 가리키기 때문에
  32. 그 메서드를 직접 호출하는 것 대신에 delegate로 그 메서드를 호출할 수 있다.
  33. delegate가 어떤 메서드를 가리키기 때문에 그 메서드와 동일한 매개변수와 리턴타입으로 선언해야한다.
  34.  
  35. delegate void Type1(void); // void func1(void)
  36. delegate int Type2(int,int); // int func2(int, int)
  37. delegate string Type3(double); // string func3(double)
  38. delegate float Type4(int); // float func4(int)
  39.  
  40. Type1 F1Delegate;
  41. F1Delegate = new Type1(func1);
  42. Type2 F2Delegate;
  43. F2Delegate = new Type2(func2);
  44. Type3 F3Delegate = func3; // C# 2.0부터 사용가능
  45. * 타입명에 관례적으로 접미사 Delegate를 붙임. 안 붙여도 상관없으나 다 이유가 있다.
  46.  
  47. '콜백(CallBack)메서드'에서 활용 시 유용.
  48.  
  49. Delegate 체인
  50. delegate 인스턴스는 하나의 메서드만 가리키고 있었는데 여러개를 가리키는 것도 가능하다.
  51.  
  52. 특이하게 += 연산자를 이용해 delegate 인스턴스를 추가한다.
  53. 마찬가지로 -= 연산자를 이용해 인스턴스를 삭제할 수있다.
  54.  
  55. 3. 람다(Lamda)
  56. 무명 메소드, 무명 델리게이터를 단순한 계산식으로 표현한 것,
  57. [구현]
  58. (매개변수_목록) => 식
  59.  
  60. MyDelegate A;
  61. A = delegate(int a, int b) { return a+b; }; //이런 식을
  62. A = (int a, int b) => a+b; //로 표현 A = (a,b) => a+b; 이렇게도 가능
  63.  
  64. () => Write("No");
  65.  
  66. ex)
  67. delegate int Method(int a, int b);
  68.  
  69. static void Main(string[] args)
  70. {
  71. Method Add= (a, b) => a+b;
  72. Console.WriteLine(Add(3, 4));
  73.  
  74. Method Minus = (a, b) =>
  75. {
  76. Console.WriteLine("{0} - {1} 의 결과는?", a, b);
  77. return a - b;
  78. };
  79. Console.WriteLine(Minus(5, 3));
  80. }
  81.  
  82.  
  83. 4. 리플렉션(Reflection)
  84. 리플렉션 객체는 런타임에 형식정보를 얻는데에 이용됩니다.
  85. 이 기능을 사용하여 실핼 중에 객체의 형식 이름, 포로퍼티, 메소드, 필드, 이벤트 목록을 모두 볼수 있고,
  86. 해당 메소드를 호출하거나 필드, 프로퍼티에 접근하는 것도 가능합니다.
  87. 프로그램의 metadata에 접근할 수 있도록 해주는 이 클래스는 System.Refelection namespace에 정의되어 있습니다.
Add Comment
Please, Sign In to add comment