我在C#中寻找Func方法我不确定与普通方法相比有什么优势.
功能方法
Funcmultiply = delegate(int a, int b, int c) { return a * b * c; }; Console.WriteLine(multiply(2, 3, 4));
正常的方法
long multiply (int a , int b , int c) { return a*b*c; }
可以解释一下吗?
如果要使用任意方法但仍满足签名,则使用委托.一个很好的例子是LINQ方法,例如Where
:
Where<T>(Func<T, bool> condition)
对于该方法,究竟condition
是什么并不重要.
带签名的任何方法(或lambda表达式):
bool Condition<T>(T argument)
可以用来代替条件.最后一个类型参数用于Func<>
指定返回类型.如果您想要一个具有void
返回类型的委托,请使用Action<>
.
Func<>
是一个多用途委托,这意味着它是一种指向函数的“指针”,而不是函数本身。
一个优点是可以将此指针作为另一个函数的参数来使用
非常人为的例子:
public double Execute(Func<double,double,double> theFunction, double lhs, double rhs) { return theFunction(lhs,rhs); } var add = new Func<double,double,double>( (x,y) => x + y); var addResult = Execute(add, 1.1, 2.2); var multiply = new Func<double,double,double>( (x,y) => x * y); var multiplyResult = Execute(multiply, 1.1, 2.2);