封装一个方法,该方法不具有参数并且不返回值
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();
}
}
}