Func <T,TResult>是一个特殊的代表,还是我们可以手动创建它?

cod*_*ing 1 c# delegates

Func<T, TResult> delegate用于具有单个参数且返回类型为TResult的委托.

这是一个特殊的代表还是我们可以手动编写代码的东西?

例如,我可以创建一个Func<T, TResult>但接受2个输入参数吗?

小智 9

"Func"实际上是一个家庭中的类System的命名空间,即:

Func<TResult>(0参数),Func<T,TResult>(1参数),Func<T1,T2,TResult>(2参数)...... Func(17)(16参数).

总共有17种不同的"Func"类,支持0到16个参数.能允许他们分享代码("功能")这个名字,即使他们实际上是不同类型的(Func,Func',Func''等),由于泛型.NET如何工作- 仿制药的决定/歧义实际类型用过的.

快乐的编码.


至于代理之间的转换,这可能是有用的(在LINQPad中运行,"C#Program"):

delegate int MyDelegate (int y);

void Main()
{
    Func<int,int> fun1 = (q) => q * q;
    MyDelegate del = new MyDelegate(fun1); // Convert the "Func" delegate to custom...
    Func<int,int> fun2 = new Func<int,int>(del); // ...and back
}
Run Code Online (Sandbox Code Playgroud)