封装一个方法,该方法不具有参数并且不返回值
public delegate void Action();
在使用 Action 委托时,不必显式定义一个封装无参数过程的委托。 例如,以下代码显式声明了一个名为 ShowValue 的委托,并将对 Name.DisplayToWindow 实例方法的引用分配给其委托实例。
using System;
using System.Windows.Forms;public delegate void ShowValue();public class Name
{private string instanceName;public Name(string name){this.instanceName = name;}public void DisplayToConsole(){Console.WriteLine(this.instanceName);}public void DisplayToWindow(){MessageBox.Show(this.instanceName);}
}public class testTestDelegate
{public static void Main(){Name testName = new Name("Koani");ShowValue showMethod = testName.DisplayToWindow;showMethod();}
}
以下示例简化了此代码,它所用的方法是实例化 Action 委托,而不是显式定义一个新委托并将命名方法分配给该委托。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace Abner_Action
{public class Name{private string instanceName;public Name(string name){this.instanceName = name; }public void DisplayToConsole(){Console.WriteLine(this.instanceName);} }class Program{static void Main(string[] args){Name testname = new Name("Abner");Action showMethod = testname.DisplayToConsole;showMethod();}}
}