C#委托

//定义委托
//delegate
public delegate void GreetingDelegate(string name);
public class Person {
public static void EnglishSpeeking(string name) {
Console.WriteLine("Come Honey"+name);
}
public static void ChineseSpeeking(string name) {
Console.WriteLine("你好"+name);
}
}
//定义委托
public delegate void Buy(string name);
public class Man {
public static void BuyChePiao (string name){
Console.WriteLine(name+"买车票");
}
public static void BuyMovePiao(string name)
{
Console.WriteLine(name + "买电影票");
}
public static void BuySome(string name, Buy buy1)
{
//相当于buy1绑定了上面俩脚本
//buy1 = Man.BuyChePiao;
//buy1 += Man.BuyMovePiao;
buy1(name);
}
}
//声明匿名委托
public delegate void NiMing(string str);
//示例
public delegate string Upper(string a);
//lanbda表达式
//声明委托
public delegate void Action(int a);
class Program
{
static void Main(string[] args)
{
/*
//合并委托
//定义一个委托类型的greetingDelegate
GreetingDelegate greetingDelegate;
//给委托绑定了方法
greetingDelegate = Person.EnglishSpeeking;
//绑定多个方法使用+=
greetingDelegate += Person.ChineseSpeeking;
//绑定多个方法使用-=
greetingDelegate -= Person.ChineseSpeeking;
//调用委托
greetingDelegate("幺儿");
*/
//利用委托实现叫小明买完车票之后又买电影票
Buy buy;
buy = Man.BuyChePiao;
buy += Man.BuyMovePiao;
//类调用方法(将委托绑定的方法作为参数进行了传递)
Man.BuySome("小明",buy);
//delegate匿名委托
//匿名委托方法只用到一次
NiMing nm = delegate (string str)
{
Console.WriteLine("匿名委托:" + str);
};
nm("委托的其他格式!");
Upper up = delegate (string a)
{
return a.ToUpper();
};
Console.WriteLine(up("yaoer"));
//lambda表达式
//格式:()=>{要执行的方法};
Action action = (int b) =>
{
b = b * 10;
Console.WriteLine(b);
};
//调用:
action(52);
}
}
posted @ 2018-09-26 20:55  黑域泡泡  阅读(156)  评论(0)    收藏  举报