委托
一个类class1写的
public delegate int MyDelegate(int a, int b); 声明一个委托类型并命名为MyDelegate,认为它是一个“指针”,它能够指向符合某种规则的所有的方法,返回值为int ,并且参数是两个int类型
public delegate string MyDelegate1(string a, string b); 返回值为string,并且参数是两个string类型
public class Class1
{
/// <summary>
/// 某个框架逻辑-->2020年编写的
/// </summary
public void MyAddFrameWork(MyDelegate myDelegate)
{
Console.WriteLine("2020年,高级程序员实现了框架的核心功能1,计算出了2个int类型的 数值 假设为 5和6");
//【扩展】能够实现调用者自己的自定义业务逻辑-->?怎么搞?作为这个高级程序员,能预判千万调用者的思维?-->使用委托,让调用者把它的业务逻辑当做参数“传进来”
//本框架 规定:需要调用者传递一个返回值为 int,并且参数为 2个int 类型的 方法进来。
int a = myDelegate(5, 6);//回调:调用者自定义的逻辑的方法,计算5和6
//【2】 实现框架的核心功能2
Console.WriteLine($"2020年,高级程序员再根据调用者计算的值:{a} 实现了框架的核心功能2");
}
}
}
一个Program展示的
static void Main(string[] args)
{
原始写法,为了新手方便理解
MyDelegate myDelegate = new MyDelegate(Add); //创建一个MyDelegate,并绑定(指向)Add方法。
class1.MyAddFrameWork(myDelegate);
匿名方法(函数)写法-->没有名字的方法,一次性使用的时候,可以这么写,简便
MyDelegate myDelegate1 = delegate (int a, int b)
{
Console.WriteLine($"2021年,初级程序员的自定义业务逻辑计算 a和b 的值为{a + b}");
return a + b;
};
class1.MyAddFrameWork(myDelegate1);
lamda表达式写法,也属于匿名函数 =>读 “goto”理解为:去执行
MyDelegate myDelegate2 = (int a, int b) =>
{
Console.WriteLine($"2021年,初级程序员的自定义业务逻辑计算 a和b 的值为{a + b}");
return a + b;
};
class1.MyAddFrameWork(myDelegate2);
终极写法,直接传递lamda
class1.MyAddFrameWork((int a, int b) =>
{
Console.WriteLine($"2021年,初级程序员的自定义业务逻辑计算 a和b 的值为{a + b}");
return a + b;
});
#region 多播委托->可以指向多个符合规范的方法
MyDelegate myDelegate3 = new MyDelegate(Add);
myDelegate3 += Add1;
myDelegate3 += Add1;
myDelegate3 += Add1;
class1.MyAddFrameWork(myDelegate3);
#endregion
}
public static int Add(int a,int b)
{
Console.WriteLine($"2021年,初级程序员的自定义业务逻辑计算 a和b 的值为{a + b}");
return a + b;
}
public static int Add1(int a1, int b1)
{
Console.WriteLine($"2021年,初级程序员的自定义业务逻辑计算 a1和b1 的值为{a1 + b1}");
return a1 + b1;
}


浙公网安备 33010602011771号