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");
}
}
}
결국 델리게이트는 메소드를 보다 효율적으로 사용하기 위해서
메소드를 캡슐화해서 사용하는 것 인거같다.
'Hoons.Net > C#' 카테고리의 다른 글
| 캠퍼스 시삽 과제 6-1) 쓰레드의 개념과 닷넷에서 지원하는 쓰레드 (0) | 2012.08.27 |
|---|---|
| 캠퍼스 시삽 과제 4-1) Stream (0) | 2012.08.13 |
| 캠퍼스 시삽 과제 3-2) 컬렉션 점찍어 출력하기(Parallel Ver.) (0) | 2012.08.13 |
| 캠퍼스 시삽 과제 3-2) 컬렉션 점찍어 출력하기(While Ver.) (0) | 2012.08.13 |
| 캠퍼스 시삽 과제 3-2) 컬렉션 점찍어 출력하기(StringBuilder Ver.) (0) | 2012.08.10 |