[英]void Func without arguments
有一些类似的问题,但不完全像我的。
对于没有返回值(即 void)且没有参数的函数,是否有 Func 等价物?
相关的问题是Func 没有返回任何东西? 但这并不能回答 void 类型。
(我需要它来请求从我的视图模型到我的视图的操作)。
你的措辞令人困惑。 您的意思可能是“没有返回类型和参数的函数”。 只是System.Action 。
Action action = () => Console.WriteLine("hello world");
action();
从你的评论:
但是我需要在 Action 中填写
<T>
类型并且 void 是不可能的(我将编辑我的问题,我犯了一个错误)。
这是一种误解。 Action 委托中的 T 是一个input 。 空是输出。 Action 委托本质上是一个返回 void 的委托。 T 是它可以操作的输入类型,然后您将提供参数的参数。
无论如何,正如这个答案和其他答案所示,您可以拥有一个没有任何 T 的 Action 委托,一个不需要输入的委托。
是的,有不同的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)
...
第一行是您要查找的内容。
较新的框架版本添加了更多参数的重载。 最大参数数:
操作始终具有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)
...
.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)
你正在寻找的是一个动作。 它不接受任何参数,也不返回任何值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.