抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

委托

delegate:可以保存多个函数指针,试用=+,-+进行操作。
//将函数赋值给delegate,delegate会储存下来。

//Action无返回值
Action<string> print = Print;
print("使用print打印");

Func<float,float,float> fc = Mul;//打印:Func,第三个参数是返回值类型
var f = fc(3, 4).ToString(); //打印:乘法3 * 4 = 12
Console.WriteLine(f);//打印:12

CalFunc func = Add;
func(1.1f, 2);//打印:加法1.1+2=3.1

Console.WriteLine("加入Sub()");
func += Sub;
func(1.1f, 2);//打印:减法1.1+2=3.1
//1.1-2=-0.9

Console.WriteLine("移除Add()");
func -= Add;
func(1.1f, 2);//打印:减法1.1-2=-0.9

Console.WriteLine("-------------闭包↓----------------");
int intVal = 10;
//匿名函数 执行后改变的值可作用到函数外。
Action aa = () =>
{
intVal += 10;
};
aa();//调用
Console.WriteLine(intVal);//打印:20

//无返回值,封装了一个print代替writeline
static void Print(string info) =>Console.WriteLine(info);

//定义了delegate,可以存储函数指针
delegate float CalFunc(float f1, float f2);
//下面是好几个函数,实现加减乘。
static float Add(float arg1, float arg2)
{
Console.WriteLine($"加法{arg1}+{arg2}={arg1 + arg2}");
return arg1 + arg2;
}
static float Sub(float arg1, float arg2)
{
Console.WriteLine($"减法{arg1}-{arg2}={arg1 - arg2}");
return arg1 - arg2;
}
static float Mul(float arg1, float arg2)
{
Console.WriteLine($"乘法{arg1}*{arg2}={arg1 * arg2}");
return arg1 * arg2;
}

评论