C#中的委托类似于C中的指针
委托是存有对某个方法引用的一种引用类型变量。
委托特别用于实现事件和回调方法。
派生自System.Delegate类。
声明委托
delegate <return type> <delegate-name> <parameter list>
实例化委托
一旦声明了委托,那么必须用 new 关键字来创建。
public delegate void printString(string s);
...
printString ps1 = new printString(WriteToScreen);
上面的委托可被用于引用任何一个带有一个单一的 string 参数的方法,并返回一个 int 类型变量。
委托实例
委托printString 可用于引用带有一个字符串作为输入的方法
using System;
using System.IO;
namespace DelegateAppl
{
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)
{
printString ps1 = new printString(WriteToScreen);
printString ps2 = new printString(WriteToFile);
sendString(ps1);
sendString(ps2);
Console.ReadKey();
}
}
}
委托在C#中应用广泛,要好好掌握呀~