有一些类似的问题,但不完全像我的.
对于没有返回值(即无效)且没有参数的函数,是否存在Func等价物?
相关的问题是Func没有返回任何东西? 但这并不适用于无效类型.
(我需要它来从我的视图模型请求操作到我的视图).
Ant*_*ram 50
你的措辞令人困惑.你可能意思是"没有返回类型且没有参数的函数".只有System.Action.
Action action = () => Console.WriteLine("hello world");
action();
Run Code Online (Sandbox Code Playgroud)
来自你的评论:
但是我需要填写
<T>一个动作中的类型并且空白不可能(我将编辑我的问题,我犯了一个错误).
这表明存在误解.Action委托中的T是输入.空白是输出.Action委托本质上是一个返回void的委托.T是它可以作用的输入类型,然后是参数提供的参数.
无论如何,正如这个答案和其他人所表明的那样,你可以拥有一个没有任何T的Action委托,一个不需要输入的委托.
Oli*_*bes 18
是的,有不同的重载Action采用不同数量的输入参数并具有void返回类型.
Action public delegate void Action()
Action<T> public delegate void Action<T>(T obj)
Action<T1,T2> public delegate void Action<T1,T2>(T1 arg1, T2 arg2)
Action<T1,T2,T3> public delegate void Action<T1,T2,T3>(T1 arg1, T2 arg2, T3 arg3)
...
Run Code Online (Sandbox Code Playgroud)
第一行是您正在寻找的.
较新的Framework版本添加了更多参数的重载.最大参数数量:
动作总是void返回类型.一个void返回类型不需要和不能被指定为一般类型参数.相比之下,Func委托定义"实际"返回类型,并且返回类型始终至少有一个泛型类型参数:
Func<TResult> public delegate TResult Func<TResult>()
Func<T,TResult> public delegate TResult Func<T,TResult>(T arg)
Func<T1,T2,TResult> public delegate TResult Func<T1,T2,TResult>(T1 arg1, T2 arg2)
...
Run Code Online (Sandbox Code Playgroud)
.NET Framework 4.0中增加了in与out修饰的泛型类型参数逆变和协方差.请参阅:泛型中的协方差和逆变.例子:
public delegate void Action<in T1, in T2>(T1 arg1, T2 arg2)
public delegate TResult Func<in T1, in T2, out TResult>(T1 arg1, T2 arg2)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
47404 次 |
| 最近记录: |