我有一個方法需要一堆可選參數,並且我重載了提供簽名不同組合的方法。智能感知彈出一堆不同的簽名,但我認爲現在看起來很混亂,因爲我需要提供不同的組合,而不僅僅是在方法簽名的末尾建立參數。可選參數
我應該只是不超載我的方法,並堅持一個簽名,以便我的方法的用戶必須通過空值?這會使簽名更清晰,但使調用代碼看起來更加混亂。
我有一個方法需要一堆可選參數,並且我重載了提供簽名不同組合的方法。智能感知彈出一堆不同的簽名,但我認爲現在看起來很混亂,因爲我需要提供不同的組合,而不僅僅是在方法簽名的末尾建立參數。可選參數
我應該只是不超載我的方法,並堅持一個簽名,以便我的方法的用戶必須通過空值?這會使簽名更清晰,但使調用代碼看起來更加混亂。
您是否僅限於使用C#1-3? C#4支持可選參數和命名參數...
在那之前,你應該要麼棒超載或創建具有可變的特性一個單獨的類,例如
FooOptions options = new FooOptions { Name="Jon", Location="Reading" };
Foo foo = new Foo(options);
這都可以在一個聲明,如果你想要做......如果某些屬性是強制性的,然後創建FooOptions
一個構造函數這需要所有的人。
在C#4你可以寫:
Foo foo = new Foo(name: "Jon", location: "Reading");
如果構造被寫成
public Foo(string name,
int age = 0,
string location = null,
string profession = null)
命名參數和可選參數應該讓人們更方便構建穩定的類型在C#4中有可選屬性:)
想一想c#方法的params參數。
void test(params object []arg) {
..
}
幾乎可以肯定是錯誤的方法:除非所有參數都是相同的類型,否則會失去類型安全性,並且會失去關於哪個參數意味着什麼的任何線索。 – 2009-07-30 14:49:42
你可以使用params keyword如果函數定義僅在長度上變化(而不是命令,否則這不會是最好的方法)。然後在功能,您可以設置的值,您需要根據參數輸入
是的,在C#2恐怕,必須等待C#4和可選參數。 – Charlie 2009-07-30 14:49:24
是的,這將非常方便 – SwDevMan81 2009-07-30 14:51:44