티스토리 뷰
델리게이트란
메서드를 값으로 가질 수 있는 타입으로써
델리게이트형 타입 변수를 선언함으로써 이 변수에 메서드를 값으로 넘길 수 있다.
자세한 부분은 밑에 코딩 참고
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using DelegateApplication; namespace DelegateApplication1 { class Program { static void Main(string[] args) { DelegateEx de = new DelegateEx(); //Console.WriteLine(de.sDel(1,2)); //SDelegate에 아무런 인스턴스를 생성하지 않아서 빌드실패하는 구문 de.sDel = new DelegateEx.SDelegate(de.Sum); //델리게이트에 메서드 집어넣는 방법1 de.sDel(1, 2); //결과 3 de.sDel += de.Sub; //델리게이트에 메서드 집어넣는 방법2 de.sDel(1, 2); //결과 -1 de.sDel -= de.Sub; de.sDel(1, 2); //결과를 보면 += 연산시 메서드가 더 추가 됨을 알 수있고, -=연산시 해당메서드가 빠져버리는 것을 알 수있다. de.sDels = new DelegateEx.SDelegate[2] { de.Sum, de.Sub }; //배열로 델리게이트 인스턴스 생성 de.sDels[0](1, 2); //결과 3 } } } namespace DelegateApplication { class DelegateEx { public SDelegate sDel; public SDelegate[] sDels; public delegate void SDelegate(int a, int b); // 델리게이트 정의방법 // 메서드를 넣을 대상으로 기초하여,, 예를 들면 void Sum(int a, int b){}; 일경우 // delegate void SumDelegate(int a, int b); // 위처럼 앞에 키워드 delegate를 붙이고 함수명을 델리게이트 타입명으로 정의한다 public void Sum(int a, int b) { Console.WriteLine(a + b); } public void Sub(int a, int b) { Console.WriteLine(a - b); } } }
'C#' 카테고리의 다른 글
C# 예외처리 (0) | 2014.11.19 |
---|---|
CLR(C#가상머신) 초기화시 값을 전달할 경우 app.config 활용 (0) | 2014.11.18 |
상수를 나타내는 const와 읽기 전용의 readonly키워드 (0) | 2014.08.27 |
c# 에서의 정보은닉(information hiding) (0) | 2014.08.27 |
객체지향[2] 특이한 연산자 오버로딩 (0) | 2014.06.20 |
Comments