Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我如何描述一个动作<;T>;返回值的委托(非void)?_C#_.net_Delegates - Fatal编程技术网

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
所做的。被相同的代表挫败了!