简介:
封装一个方法,该方法不具有参数并且不返回值。可以等价Deleage委托,绑定事件。
内容:
1.显式声明了一个名为 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委托,并分配委托
ShowValue showMethod = testName.DisplayToWindow;
//委托调用
showMethod();
}
}
2.实例化 Action 委托,而不是显式定义一个新委托并将命名方法分配给该委托 。
using System;
using System.Windows.Forms;
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");
//实例化Action委托,并分配委托
Action showMethod = testName.DisplayToWindow;
//委托调用
showMethod();
}
}
3.Action 委托与匿名方法一起使用。
using System;
using System.Windows.Forms;
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 Anonymous
{
public static void Main()
{
//实例化类
Name testName = new Name("Koani");
//实例化Action委托,并通过匿名方法分配委托
Action showMethod = delegate() { testName.DisplayToWindow();} ;
//委托调用
showMethod();
}
}
4.lambda 表达式分配给 Action 委托实例 。
using System;
using System.Windows.Forms;
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 LambdaExpression
{
public static void Main()
{
//实例化类
Name testName = new Name("Koani");
//实例化Action委托,并通过lambda分配委托
Action showMethod = () => testName.DisplayToWindow();
//委托调用
showMethod();
}
}