2014-01-08 61 views
1

我有一個方法需要一個動態類型(可能不相關)的參數和多個可選參數的多個類型。有什麼方法可以指定你傳遞哪些參數?如何從多個可選參數指定參數

有了這段代碼,我得到了編譯器錯誤(下面),我希望不必編寫重載或用多個命令重寫可選參數的函數。

  • 錯誤2參數3:無法從「字串」到「布爾」
  • 錯誤1爲指標的最佳重載方法匹配(INT,布爾, 布爾,字符串)」轉換具有一些無效參數

代碼:

public void DoSomeWork() 
{ 
    Index<int>(Id, false,"test"); //compiler error 
} 

private void Index<T>(T o, bool flush = false, bool userDispose = true, string starter = "stop") 
{ 

} 

回答

5

您可以標記的名稱後跟雙點可選參數。在您的例子:

public void DoSomeWork() 
{ 
    Index<int>(Id, false, starter: "test"); 
} 

這意味着Idfalse名字前兩個參數oflush,第三個參數userDispose未設置和參數starter設置與test

有關命名參數和可選參數的更多信息,請查看MSDN

+0

Interresting,我不知道! – cubitouch

+0

謝謝,正是我正在尋找的東西(只要它讓我回答就會回答)。 –

3

使用named arguments,這是C#的一大特性之一。

Index<int>(Id, flush: false, starter: "test"); 
+0

謝謝,那是爲我做的。 –