캠퍼스 시삽 과제 5-1) Delegate
Delegate 를 MSDN에서 찾아보면
'명명된 메서드나 무명 메서드를 캡슐화할 때 사용할 수 있는 참조 형식을 선언하는 데 사용됩니다.'
라고 정의되어 있다.
사용하면서 느끼는 점은 Delegate의 기본베이스는 C++의 함수포인터인 것 같다.
하지만 C#은 C++보다 좀더 고급언어이기때문에 조금더 보안하고 다듬어서 안정성을 강화하고
기능을 추가한 키워드라고 생각한다.
MSDN의 샘플을 보면 쉽게 이해된다.
using System;
//Delegate_Test 이름의 델리게이트 정의
delegate void Delegate_Test(string message);
namespace ConsoleApplication1
{
class Program
{
//콘솔창에 파라미터로 받은 문자열을 출력하는 함수 선언
static void DelegateMethod_Test(string message)
{
Console.WriteLine(message);
}
static void Main(string[] args)
{
//Delegate_Test델리게이트 D1에 DelegateMethod_Test 생성과 인스턴스 생성
Delegate_Test d1 = DelegateMethod_Test;
//Delegate_Test델리게이트 D2에 Delegate 함수를 만들어 대입
Delegate_Test d2 = delegate(string message)
{
Console.WriteLine(message);
};
// D1과 D2에 문자열을 입력하면 델리게이트 안에 갖고있는
// 함수의 인자값으로 전달되고 함수가 실행
d1("Hello");
d2("World");
}
}
}
결국 델리게이트는 메소드를 보다 효율적으로 사용하기 위해서
메소드를 캡슐화해서 사용하는 것 인거같다.