[英]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.