Step 1: delegate 타입 선언
C# code
Collapse | Copy Code delegate int MyDel(string input);
위의 선언은 MyDel타입 변수가 integer를 반환하고 파라미터를 string을 갖는 함수들을 가르킵니다.
Step 2: 변수선언하기
deletegate타입을 위해 변수를 정의합니다. C#
Collapse | Copy Code MyDel func;
위의 정의는 아래의 int x를 정의하는것과 같습니다.
Collapse | Copy Code int x;
그럼 여러분들이 delegate 타입 변수를 만들때 어떤 일이 일어날까요? 간단하게 pointer 타입 변수를 생성합니다. 이 변수는 함수를 가르키지요. c/c++에서는 그러한것들을 함수 pointer라고 합니다.
Step 3: 함수를 변수에 할당하기
이 Step에서는 우리는 간단하게 함수를 변수에 할당합니다. 이러한 작업은 아래의 작업과 같이 inteter x에 5를 할당하는 것과 유사합니다.
Collapse | Copy Code x = 5;
C#에서 함수를 변수에 할당하는 방법은 3가지가 있습니다. 그 3가지는 delegate 키워드를 사용하는것 lamda표현식을 사용하는것 그리고 일반적인 방법이 있습니다. 우리는 파라미터로 string을 리턴값으로 받은 string의 length를 리턴할것입니다.
Collapse | Copy Code // Assign our variable a new function (created via delegate)
func = delegate(string str) { return str.Length; };
or
Collapse | Copy Code func = (str => str.Length);
or
Collapse | Copy Code func = FunctionFoo;
private int FunctionFoo(string str)
{
return str.Lenght;
}
Step 4: delegate 변수를 사용하여 함수를 호출하기
이제 함수를 호출할 타임입니다. C#에서 함수를 호출하기 위해서 아래와 같이 2가지 방법으로 호출할수 있습니다.
Collapse | Copy Code func("My Input string");
or
Collapse | Copy Code func.Invoke("My Input string")
결론: 이번 포스는 매우 간단하지만 매우 중요한 토픽입니다.