C# 대리자(Delegate)
Delegate의 사전적의미는 대리인이란 의미를 갖는다.
C#에서의 Delegate는 메소드를 대신해서 호출하는 역할을 한다.
예를 들어 Thread를 사용한다고 할 때 thread생성시 실행되는 함수를 다음과 같이 표현할 수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | public class MainClass { public static void Main ( string [] args) { Thread thread = new Thread(ThreadPrint); thread.Start (); thread.Join (); } public static void ThreadPrint() { Console.WriteLine ( "Thread Call ThreadPrint Method" ); } } |
만약 delegate를 사용하면 ThreadPrint 메소드를 정의 하지 않고 다음과 같이 필요한 함수를 구현할 수 있다.
1 2 3 4 5 6 7 8 9 10 | public static void Main ( string [] args) { Thread thread = new Thread( delegate () { Console.WriteLine ( "Thread Call ThreadPrint Method" ); }); thread.Start (); thread.Join (); } |
위의 코드에서 보면 ThreadPrint메소드정의를 생략하고 직접 delegate를 사용하여 함수를 구현하였다.
위의 코드에서는 delegate를 한번만 사용 하였다면 다음과 같이 delegate를 재 사용하도록 하는 것도 가능하다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | public class MainClass { delegate double Calculate( int fVal, int lVal, string method); public static void Main ( string [] args) { Calculate cal = delegate ( int fVal, int lVal, string method) { double returnVal = 0.0; if ( "Plus" .Equals (method)) { returnVal = fVal + lVal; } else if ( "Minus" .Equals (method)) { returnVal = fVal - lVal; } return returnVal; }; Console.WriteLine(cal(5, 4, "Plus" )); Console.WriteLine(cal(5, 4, "Minus" )); } } |
출처 :
시작하세요! C# 프로그래밍
'프로그래밍 > C#' 카테고리의 다른 글
C# Linq (3) | 2015.05.18 |
---|---|
C# 람다식(Lamda Expression) (9) | 2015.04.11 |
C# 가비지 컬렉션(Garbage Collection) (1274) | 2015.03.23 |
C# 기본자료형, 변수 (10) | 2015.03.22 |