-
What is delegate?
C# delegate는 C/C++의 함수 포인터와 비슷한 개념으로 메서드 파라미터와 리턴 타입에 대한 정의를 한 후, 동일한 파라미터와 리턴 타입을 가진 메서드를 서로 호환해서 불러 쓸 수 있는 기능이다.
delegate: (v)위임하다.(n)대리자
델리게이트의 파라미터와 리턴형식이 위임하는 메서드와 같도록 한다.
using System;
namespace ConsoleApp133
{
class Program
{
public delegate void del(string s);
static void Main()
{
string s = "Hello";
A a = new A();
del d = new del(a.method);
d(s);
}
}
class A
{
public void method(string s)
{
Console.WriteLine(s);
}
}
}멀티 델리게이트를 선언할 때에는 +=와 -=로 위임하고 제거할 수 있다.
using System;
namespace ConsoleApp133
{
class Program
{
public delegate void del(string s);
static void Main()
{
string s = "Hello";
A a = new A();
del d = new del(a.method);
d += new del(a.method2); //메서드를 델리게이트에 위임
d += new del(a.method3);
d(s);
}
}
class A
{
public void method(string s)
{
Console.WriteLine("Method one:" + s);
}
public void method2(string s)
{
Console.WriteLine("Method two:" + s);
}
public void method3(string s)
{
Console.WriteLine("Method three:" + s);
}
}
}결과
Method one:Hello
Method two:Hello
Method three:Hello
계속하려면 아무 키나 누르십시오 . . .'C#' 카테고리의 다른 글
System.Collections (0) 2019.06.12 System.IO - FileStream (0) 2019.06.11 메모리의 특징 이해하기 (0) 2019.06.10 C# polymorphism (2/4) - Override (0) 2019.06.06 Indexer (0) 2019.06.06