定义
委托是一种引用类型,它表示对具有特定参数列表和返回类型的方法的引用。在实例化委托时,可以将其实例与任何具有兼容签名和返回类型的方法相关联,可以通过委托实例调用方法,也可以使用委托将方法作为参数传递给其他方法
优点
委托的使用将大大提高程序的可扩展性。
使用
在C#中使用delegate关键字定义委托,可以使用调用的语法来调用委托
- 调用委托
一般可以使用委托对象==invoke()==方法来调用委托
示例
public delegate string TranslationDelegate(string name);public class Program{static void Main(string [] args){TranslationDelegate chinaTransfer=new TranslationDelegate(ChineseSayHello);string csh=chinaTransfer.Invoke(\"张得子\");Console.WriteLine(csh);TranslationDelegate usTransfer=new TranslationDelegate(AmericanSayHello);string ash=usTransfer.Invoke(\"Niki\");Console.WriteLine(ash);}public static string ChineseSayHello(string name){return name+\":早上好!\";}public static string AmericanSayHello(string name){return name+\":Say Hello!\";}}
- 多播委托
委托对象有一个好用的属性,可以通过使用“+”运算符将多个对象分配到一个委托实例上,形成多播委托。多播委托包含已分配的委托列表,因此多播委托被调用时会依次调用列表中的委托。但是多播委托仅可合并类型相同的委托。使用“-”运算符可以从多播委托中删除组件委托。
例如:我们在吃饭的时候会看电视,此时吃饭和看电视是同时发生的
示例
delegate void Operation(string name);class Program{static void Main (string[] args){Operation operation=new Operation(Eating);operation +=new Operation(WatchTV);operation.Invoke(\"李四\");}public static void Eating(string name){Console.WriteLine(name+\":在吃饭!\");}public static void WatchTV(string name){Console.WriteLine(name+\":正在看电视!\");}}