簡體   English   中英

void Func 不帶參數

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

第一行是您要查找的內容。

較新的框架版本添加了更多參數的重載。 最大參數數:

  • .NET 框架 2.0: 1
  • .NET 框架 3.5: 4
  • .NET 框架 4.0: 16
  • 銀光: 16

操作始終具有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 已向通用類型參數添加了inout修飾符以實現逆變和協變。 請參閱: 泛型中的協方差和逆變 例子:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM