C#委托delegate使用范例
using System; using System.Collections.Generic; using System.Text; namespace Delegate { //委托简单说就是可以让方法作为变量进行传递. //定义委托,它定义了可以代表的方法的类型 public delegate void MyDelegate(string name); class Program { //定义两个和委托相同参数的相同返回值的方法. 要和委托绑定的好像只能是静态方法.因为不是静态方法IDE会报错. public static void ShowMessage(string Message) { Console.WriteLine("Hello" + Message); } public static void SHowMessage(string Message) // 在C#中是区分大小写的,所以这个方法和上面那个不是一样的. { Console.WriteLine("你好" + Message); } static void Main() { //定义一个委托变量. 然后绑定方法. MyDelegate My = new MyDelegate(ShowMessage); //现在可以通过这个委托变量来使用方法了. My(" Tony"); //这里会输出Hello Tony. 疑问来了. 我们为什么直接使用方法呢? 还定义一个委托变量干嘛? 多写了几行代码. // 其实委托的用处不是在这里. 我们可以试试这样. // 委托链, 一个委托变量绑定多个方法. My += SHowMessage; //输出看看 My("Tony"); //输出结果将是 HelloTony and 你好Tony. } //////////////// 分割线, 在方法中传递方法.用方法做参数/////////////////////////////////////////////////////// //定义一个方法. public static void input(string name, MyDelegate Message) //这里面的Message就是委托变量了. 你可以将一个方法传递进去. { Message(name); } //////使用方法来作为参数./////////////// input("Tony" , ShowMessage); input("Tony",SHowMessage); } }