//定义委托,它定义了可以代表的方法的类型
public delegate void GreetingDelegate(string name);
/// <summary>
/// 用英文打招呼
/// </summary>
/// <param name="name"></param>
private void EnglishGreeting(string name)
{
Console.WriteLine("Morning, " + name);
}
/// <summary>
/// 用中文打招呼
/// </summary>
/// <param name="name"></param>
private void ChineseGreeting(string name)
{
Console.WriteLine("早上好, " + name);
}
//注意此方法,它接受一个GreetingDelegate类型的方法作为参数
/// <summary>
/// 委托(代理的方法)
/// </summary>
/// <param name="name"></param>
/// <param name="markGreeting"></param>
private void GreetPeople(string name, GreetingDelegate MakeGreeting)
{
MakeGreeting(name);
}
private void Form1_Load(object sender, EventArgs e)
{
//Delegate方式一:
//GreetPeople("Jimmy Zhang", EnglishGreeting);
//GreetPeople("张子阳", ChineseGreeting);
//Console.ReadKey();
//Action方式二:
GreetPeopleAction("Jimmy Zhang", (s) =>
{
Console.WriteLine("Morning, " + s);
});
GreetPeopleAction("张子阳", (s) =>
{
Console.WriteLine("早少好, " + s);
});
Console.ReadKey();
}
/// <summary>
/// Action委托作为参数
/// </summary>
/// <param name="name"></param>
/// <param name="action"></param>
public void GreetPeopleAction(string name, Action<string> action)
{
action(name);
}