C# 中的 Delegate 類似于 C++ 中函數(shù)的指針震叮。
所有的委托Delegate都派生自 System.Delegate 類省店。
委托的聲明:
public delegate double Calculation(int x, int y);
實例化一個委托:
Calculation myCalculation = new Calculation(myMath.Average);
委托對象必須使用 new 關鍵字來創(chuàng)建埠戳,且與一個特定的方法有關湿镀。
這里與Average方法相關
使用委托對象調(diào)用方法:
double result = myCalculation(10, 20);
結果為:15
delegate的應用:
class PrintString
{
static FileStream fs;
static StreamWriter sw;
// 委托聲明
public delegate void printString(string s);
// 打印到控制臺
public static void WriteToScreen(string str)
{
Console.WriteLine("The String is: {0}", str);
}
// 打印到文件
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();
}
// 該方法把委托作為參數(shù)诫钓,并使用它調(diào)用方法
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();
}
}
sendString(ps1)會在控制臺上打印出:The String is: Hello World