Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- [소개]
- C/C++을 참조한 언어, 닷넷 전용언어
- 약간 모든 언어의 짬뽕이라는 소리를 듣기도 한다.
- [특징]
- 가비지 컬렉션 기능이 있다.
- 다중상속을 지원하지 않는다.
- 클래스간의 프렌드 지정을 할 수 없다.
- 디폴트 인수를 지원하지 않는다.
- 자료형에 대해 엄격하다.
- 자바에 JVM이 있다면 C#은 CLR(Common Language Runtime)에서 돌아간다.
- CLR이 중간 언어(MS IL)를 기계어로 번역해준다.
- 오버라이딩 시 virtual 키워드를 붙여야한다.
- 1. 프로퍼티(Property) = 속성
- 프로퍼티는 Get,Set을 손쉽게 만들 수 있는 방법(변수)이다. 함수 선언방식에서 ()만 빼면 프로퍼티 변수의 선언이다.
- 선언 부에 get {return ~; } set {~= value; } 이런식으로 선언한다.
- 자동 선언을 이용하려면 set; get; 이렇게 쓰면 됨.
- 사용할때는
- 인스턴스.프로퍼티 명; //Get을 실행
- 인스턴스.프로퍼티 명 = 값; //Set을 실행
- 객체 생성시에 손쉽게 프로퍼티 변수를 초기화 할 수 있으며 변수처럼 사용할 수 있다.
- (변수처럼 사용하는게 곧 Get을 호출하는것과 같으므로)
- 2. 델리게이트(Deligate)
- 메서드를 변수로서 사용하기 위한 개념. (=함수 포인터) 메서드를 가리킬 수 있는 타입이다.
- delegate로 선언한 타입이 메서드를 가리키기 때문에
- 그 메서드를 직접 호출하는 것 대신에 delegate로 그 메서드를 호출할 수 있다.
- delegate가 어떤 메서드를 가리키기 때문에 그 메서드와 동일한 매개변수와 리턴타입으로 선언해야한다.
- delegate void Type1(void); // void func1(void)
- delegate int Type2(int,int); // int func2(int, int)
- delegate string Type3(double); // string func3(double)
- delegate float Type4(int); // float func4(int)
- Type1 F1Delegate;
- F1Delegate = new Type1(func1);
- Type2 F2Delegate;
- F2Delegate = new Type2(func2);
- Type3 F3Delegate = func3; // C# 2.0부터 사용가능
- * 타입명에 관례적으로 접미사 Delegate를 붙임. 안 붙여도 상관없으나 다 이유가 있다.
- '콜백(CallBack)메서드'에서 활용 시 유용.
- Delegate 체인
- delegate 인스턴스는 하나의 메서드만 가리키고 있었는데 여러개를 가리키는 것도 가능하다.
- 특이하게 += 연산자를 이용해 delegate 인스턴스를 추가한다.
- 마찬가지로 -= 연산자를 이용해 인스턴스를 삭제할 수있다.
- 3. 람다(Lamda)
- 무명 메소드, 무명 델리게이터를 단순한 계산식으로 표현한 것,
- [구현]
- (매개변수_목록) => 식
- MyDelegate A;
- A = delegate(int a, int b) { return a+b; }; //이런 식을
- A = (int a, int b) => a+b; //로 표현 A = (a,b) => a+b; 이렇게도 가능
- () => Write("No");
- ex)
- delegate int Method(int a, int b);
- static void Main(string[] args)
- {
- Method Add= (a, b) => a+b;
- Console.WriteLine(Add(3, 4));
- Method Minus = (a, b) =>
- {
- Console.WriteLine("{0} - {1} 의 결과는?", a, b);
- return a - b;
- };
- Console.WriteLine(Minus(5, 3));
- }
- 4. 리플렉션(Reflection)
- 리플렉션 객체는 런타임에 형식정보를 얻는데에 이용됩니다.
- 이 기능을 사용하여 실핼 중에 객체의 형식 이름, 포로퍼티, 메소드, 필드, 이벤트 목록을 모두 볼수 있고,
- 해당 메소드를 호출하거나 필드, 프로퍼티에 접근하는 것도 가능합니다.
- 프로그램의 metadata에 접근할 수 있도록 해주는 이 클래스는 System.Refelection namespace에 정의되어 있습니다.
Add Comment
Please, Sign In to add comment