델리게이트
- 메소드를 가리키는 참조형으로서 메소드의 번지를 저장하거나 다른 메소드의 인수로 메소드 자체를 전달하고 싶을 때 사용
- 메소드의 코드들도 메모리상에 존재하므로 그 시작 위치를 가리킬수 있다
지정자 delegate 리턴타입 이름(인수목록);
- 형식인수일므도 지정해야 한다
- 델리게이트는 하나의 파생 클래스이다. 그래서 꼭 클래스에 소속되지 않아도 되고, 네임스페이스에 바로 소속된다
- 클래스와 대등한 타입으로 인정받고, 클래스가 선언될수있는 모든 곳에 델리게이트도 선언할수있다
- 델리게이트는 타입이므로 그 자체만으로 메소드를 가리킬 수는 없으며 인스턴스를 생성한 후에 메소드를 가르키도록 해야한다
- dele 타입은 정수 인수 하나를 취하고 리턴값이 없는 메소드를 가리키는 타입으로 정의
- dele 자체가 클래스 선언문과 대등한 자격을 가지므로 네임스페이스에 곧바로 선언할수 있다
- 두개의 메소드는 델리게이트를 통해 간접적으로 호출되었다
특정 형태의 메소드를 가리킬 수 있는 델리게이트는 공식으로 선언한다
- 대상 메소드를 적어 놓고 다음 순서대로 델리게이트 선언문으로 바꾼다
int method(string s)
↓ ↓ ↓
delegate int dele(string s)
1. 리턴 타입과 인수는 그대로 옮겨적고
2. 메소드 이름을 델리게이트 이름으로 바꾸고
3. 앞에 delegate 키워드를 붙인다
- 형태가 다른 세개의 메소드 선언
- 클래스 내,외부에 정적, 비정적으로 4개 정의해놓고 dele타입의 d로 호출
- 소속된 클래스를 가리지 않으며 정적, 비정적을 구분하지 않는다 - 객체 지향적
'Study > C#' 카테고리의 다른 글
C# 델리게이트 - 1. 델리게이트 (활용) (0) | 2012.01.09 |
---|---|
C# 델리게이트 - 1. 델리게이트 (공변성) (0) | 2012.01.06 |
C# 인터페이스 - 2. 인터페이스 활용 (깊은 복사) (0) | 2012.01.06 |
C# 인터페이스 - 2. 인터페이스 활용 (반복기) (0) | 2012.01.06 |
C# 인터페이스 - 2. 인터페이스 활용 (열거하기) (0) | 2012.01.05 |