델리게이트
- 메소드를 가리키는 참조형으로서 메소드의 번지를 저장하거나 다른 메소드의 인수로 메소드 자체를 전달하고 싶을 때 사용
- 메소드의 코드들도 메모리상에 존재하므로 그 시작 위치를 가리킬수 있다

지정자 delegate 리턴타입 이름(인수목록);

- 형식인수일므도 지정해야 한다
- 델리게이트는 하나의 파생 클래스이다. 그래서 꼭 클래스에 소속되지 않아도 되고, 네임스페이스에 바로 소속된다
- 클래스와 대등한 타입으로 인정받고, 클래스가 선언될수있는 모든 곳에 델리게이트도 선언할수있다
- 델리게이트는 타입이므로 그 자체만으로 메소드를 가리킬 수는 없으며 인스턴스를 생성한 후에 메소드를 가르키도록 해야한다






- dele 타입은 정수 인수 하나를 취하고 리턴값이 없는 메소드를 가리키는 타입으로 정의
- dele 자체가 클래스 선언문과 대등한 자격을 가지므로 네임스페이스에 곧바로 선언할수 있다
- 두개의 메소드는 델리게이트를 통해 간접적으로 호출되었다


특정 형태의 메소드를 가리킬 수 있는 델리게이트는 공식으로 선언한다
- 대상 메소드를 적어 놓고 다음 순서대로 델리게이트 선언문으로 바꾼다
             int method(string s)
             ↓    ↓          ↓
delegate int dele(string s)
1. 리턴 타입과 인수는 그대로 옮겨적고
2. 메소드 이름을 델리게이트 이름으로 바꾸고
3. 앞에 delegate 키워드를 붙인다





- 형태가 다른 세개의 메소드 선언






- 클래스 내,외부에 정적, 비정적으로 4개 정의해놓고 dele타입의 d로 호출
- 소속된 클래스를 가리지 않으며 정적, 비정적을 구분하지 않는다 - 객체 지향적

Posted by 코딩하는 야구쟁이
,