반응형
- delegate[델리게이트]
- 선언 : delegate 반환형 이름(매개변수...);
- 메소드의 참조(ex.매개변수)를 포함 하여 인스턴스화 하여 작동
- 반환 형과 매개변수가 모두 같아야함
Class A
{
delegate int TDelegate(int a, int b); //델리게이트 선언
int Plus(int a, int b)
{
return a + b;
}
int Minus(int a, int b)
{
return a - b;
}
void Main()
{
TDelegate td1 = Plus;
TDelegate td2 = delegate(int a, int b)
{
return a / b;
};
Console.WriteLine(tb1(5,10)); //15출력
Console.WriteLine(tb2(10,5)); //2출력
//이런식으로 여러개를 묶어서 사용도 가능
TDelegate tdchain = (TDelegate)Delegate.Combine(new TDelegate(Plus), new TDelegate(Minus));
Console.WriteLine(tb1(20,10)); //30 10 출력
}
}
- Event[이벤트]
- 선언 : event 델리게이트 이름;
Class B
{
public delegate void MyDelegate(string msg);
Class Publisher
{
public event MyDelegate Active;
public void DoActive(int number)
{
if(number % 10 == 0) Active("Active" + number);
else Console.WriteLine(number);
}
Class Subscriber
{
static public void MyHandler(string msg)
{
Console.WriteLine(msg);
}
static void Main()
{
Publisher publisher = new Publisher();
publisher.Active += new MyDelegate(MyHandler);
for(int i =0; i < 50; i++)
{
publisher.DoActive(i);
//1 2 ... Actiave10 11 12 ... Active40 41 ... 49
}
}
}
}
}
반응형
'C#' 카테고리의 다른 글
[C#] Action, Predicate, Function (0) | 2022.11.15 |
---|---|
[C#] 제네릭 형식 제약조건 (1) | 2022.09.30 |
[c#] 추상클래스와 추상 메서드(abstract) (0) | 2021.08.20 |
[c#] 가상(virtual)함수와 오버라이딩(override) (0) | 2021.08.20 |
[c#] Boxing 과 Unboxing (0) | 2021.08.20 |