C# 中的 Delegate 类似于 C++ 中函数的指针。
所有的委托Delegate都派生自 System.Delegate 类。
委托的声明:
public delegate double Calculation(int x, int y);
实例化一个委托:
Calculation myCalculation = new Calculation(myMath.Average);
委托对象必须使用 new 关键字来创建,且与一个特定的方法有关。
这里与Average方法相关
使用委托对象调用方法:
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();
}
// 该方法把委托作为参数,并使用它调用方法
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
网友评论