111,092
社区成员




static long Fun11(long a, long b)
{
return a + b;
}
现在又想实现减法功能,那你加一个参数来判断
static long Fun12(long a, long b, string type)
{
if (type == "+")
{
return a + b;
}
else
{
return a - b;
}
}
但又想乘法,除法,各种奇奇怪怪的运算,你就不能无限扩展了,一个方案是让计算方法也像一个参数传进来,这个计算方法就是一个委托类型,可以定义一个委托 public delegate long Calculate(long a, long b);
这样,你的代码就可以改成
static long Fun3(long a, long b, Calculate f)
{
return f(a,b);
}
如果不想用自己定义的Calculate,用默认的也一样,可以少写一句定义语句。
static long Fun2(long a, long b, Func<long,long,long> f)
{
return f(a, b);
}
使用的时候可以最简单的=>语法实现乘法计算
var value2 = Fun3(1, 2, (a, b) => a * b);
或者匿名函数的写法
var value1 = Fun3(1, 2, delegate (long a, long b) { return a * b; });
或者最原始的写法,写在外部定义一个函数,然后将这个函数作为参数
static long test (long a,long b)
{
return a * b;
}
////
var value = Fun3(1, 2, test);