2012-05-04 29 views
10

如何使用至少有一個值的參數params具有至少一個值的C#參數

public void Foo(params string[] s) { } 

public void main() 
{ 
    this.Foo(); // compile error 
    this.Foo(new string[0]); // compile error 
    this.Foo({ }); // compile error 
    this.Foo("foo"); // no error 
    this.Foo("foo1", "foo2"); // no error 
} 

回答

21

只要做到:

public void Foo(string first, params string[] s) { } 
+0

我也想過這個解決方法,我認爲它不是那麼幹淨。因爲'first'字符串不會是'string []'_(如果有的話)的迭代中的一部分,這在某些情況下可能不起作用。沒有其他辦法嗎? –

+2

但是你所說的是,你總是*會有一個參數開始。該解決方案儘可能清晰地反映了這一點。 – Nick

+11

@JohnIsaiahCarmona然後將它們連接在一起:'new [] {first} .Concat(s)'。現在通常可以對結果進行「foreach」。 –

4

你不能在編譯時間params指明的條件。

但是,您可以在運行時檢查此問題,並在未滿足指定條件時拋出異常。

相關問題