C# 我如何描述一个动作<;T>;返回值的委托(非void)?
C# 我如何描述一个动作<;T>;返回值的委托(非void)?,c#,.net,delegates,C#,.net,Delegates,操作委托返回无效。是否有其他内置委托返回非void值?当然,Func委托返回T Func<TResult> is "TResult method()" Func<TInput, TResult> is "TResult method(TInput param)" Func是“TResult method()” Func是“TResult方法(TInput参数)” 一直到 Func<T1, T2, T3, T4, TResult> Func 此外,为
操作
委托返回无效。是否有其他内置委托返回非void值?当然,Func委托返回T
Func<TResult> is "TResult method()"
Func<TInput, TResult> is "TResult method(TInput param)"
Func是“TResult method()”
Func是“TResult方法(TInput参数)”
一直到
Func<T1, T2, T3, T4, TResult>
Func
此外,为了完整性,还有一个返回bool的谓词
Predicate<T> is "bool method(T param)"
谓词是“bool方法(T参数)”
是的Func
返回指定为最终泛型类型参数的类型,例如Func
返回一个int
,而Func
接受一个整数并返回一个字符串。示例:
Func<int> getOne = () => 1;
Func<int, string> convertIntToString = i => i.ToString();
Action<string> printToScreen = s => Console.WriteLine(s);
// use them
printToScreen(convertIntToString(getOne()));
Func getOne=()=>1;
Func convertIntToString=i=>i.ToString();
操作printToScreen=s=>Console.WriteLine;
//使用它们
printToScreen(convertIntToString(getOne());
此外,在.NET 4中,Func
可以是Func
之前的限制是T4。此外,为了完整起见,请不要忘记和(两者明显早于Func
和Func
,这使得它们过时)。事实上,可能不止这些…@Dan说得很对,尽管他们的名字非常具体(这就是他们的全部)。我曾经使用过Converter:是的,虽然很多LINQ扩展方法都使用了一个名为谓词的Func
参数,但这总是让我觉得有点奇怪。在一个相关的注释中,我曾经(在我的黑暗时期)实际上开始编写一个ConvertAll
函数,它使用IEnumerable
并在Converter
的帮助下吐出一个IEnumerable
。。。直到我(很快)意识到这正是Select
所做的。被相同的代表挫败了!