C#의 대리자는 메서드에 대한 참조입니다. 대리자는 메서드에 대한 참조를 보유하는 참조 형식 변수입니다. 참조는 런타임에 변경할 수 있습니다.
대리자는 특히 이벤트 및 콜백 메서드를 구현하는 데 사용됩니다. 모든 대리자는 System.Delegate 클래스에서 암시적으로 파생됩니다.
C#에서 대리자를 선언하는 방법을 살펴보겠습니다.
delegate <return type> <delegate-name> <parameter list>
C#에서 대리자를 사용하는 방법을 배우기 위한 예를 살펴보겠습니다.
예
using System; using System.IO; namespace DelegateAppl { class PrintString { static FileStream fs; static StreamWriter sw; // delegate declaration public delegate void printString(string s); // this method prints to the console public static void WriteToScreen(string str) { Console.WriteLine("The String is: {0}", str); } // this method prints to a file public static void WriteToFile(string s) { fs = new FileStream("c:\\message.txt", FileMode.Append, FileAccess.Write); sw = new StreamWriter(fs); sw.WriteLine(s); sw.Flush(); sw.Close(); fs.Close(); } // this method takes the delegate as parameter and uses it to // call the methods as required public static void sendString(printString ps) { ps("Hello World"); } static void Main(string[] args) { printString ps1 = new printString(WriteToScreen); printString ps2 = new printString(WriteToFile); sendString(ps1); sendString(ps2); Console.ReadKey(); } } }
출력
The String is: Hello World