转载 https://www.cnblogs.com/xuxiaoshuan/p/6844511.html
一、
1.定义委托性质
private delegate void Buybook();
2.定义委托的方法
private static void Book()
{
Console.WriteLine("");
}
3.为委托绑定事件
BuyBook buyBook = new BuyBook(Book);
4.触发事件
buyBook();
二、Action的用法 ( 适用范围:无返回值 )
情况1:无参数
1.定义委托要调用的方法
private static void Book()
{
Console.WriteLine("");
}
2.为Action绑定要调用的方法
Action BookAction = new Action(Book);
3.触发事件
BookAction();
情况2:一个参数
1.定义委托要调用的方法
private static void Book(string bookName)
{
Console.WriteLine(bookName);
}
2.为Action绑定要调用的方法
Action<string> BookAction = new Action<string>(Book);
3.触发事件
BookAction("百年孤独");
情况3:两个参数
1.定义委托要调用的方法
private static void Book(string bookName,string bookStoreName)
{
Console.WriteLine(bookName);
Console.WriteLine(bookStoreName);
}
2.为委托绑定方法
Action< string , string > BookAction = new Action< string , string >(Book);
3.触发事件
BookAction("百年孤独","新华书店");
三、Func( 适用情况 : 有返回值 )
情况1:没有参数,只有返回值
1.定义要绑定的方法
private string FuncBook()
{
return "即将返回的值";
}
2.为委托绑定事件
Func<string> RetBook = new Func<string>(FuncBook);
3.使用返回值
Console.WriteLine(RetBook);
情况2:有参数,有返回值
1.定义要绑定的方法
private string FuncBook( string bookName )
{
return bookName;
}
2.为委托绑定方法
Func<string,string> RetBook = new Func<string,string>(FuncBook);
3.使用返回值
Console.WriteLine(RetBook("aaa"));
情况3:传递值
1.定义要绑定的方法
private static void DisPlayValue(Func<string> func)
{
string RetFunc = func();
Console.WriteLine("我在测试一下传过来值:{0}",RetFunc);
}
2.为委托绑定方法
Func<string> funcValue = delegate
{
return "我是即将传递的值3";
};
3.使用返回值
DisPlayValue(funcValue);