2010-02-24 86 views
3

使用該params關鍵字是String.Format("", foo, bar, baz)C#方法,使用params關鍵字

但如何會使接受枚舉的,像這樣的陣列的方法的方法的一個例子:

class MyClass 
{ 
    public enum Foo { Bar, Baz } 

    public static void MyMethod(params enum[] Foo) {} 

    public static void TestMethod() 
    { 
     MyMethod(); 
     MyMethod(Foo.Bar); 
     MyMethod(Foo.Baz); 
     MyMethod(Foo.Bar, Foo.Baz); 
    } 
} 

回答

10
public static void MyMethod(params Foo[] values) { } 
+0

完美,謝謝! – RyanScottLewis 2010-02-24 18:40:39

3

試試這個

class MyClass 
{ 
public enum Foo { Bar, Baz } 

public static void MyMethod(params Foo[] foos) {} 

public static void TestMethod() 
{ 
    MyMethod(); 
    MyMethod(Foo.Bar); 
    MyMethod(Foo.Baz); 
    MyMethod(Foo.Bar, Foo.Baz); 
} 

}

3

Err..try:

public static void MyMethod(params Foo[] foo) { } 
+1

Bah。方式太晚了。 ;-) – 2010-02-24 18:41:30

+0

= p謝謝反正。你知道我會如何將Foo枚舉數組合併成一些默認值。例如我通過'MyMethod(Foo.Baz)',但我有'Foo.Bar'設置爲默認,所以'foo'將等於'[Foo.Bar,Foo.Baz]' – RyanScottLewis 2010-02-24 19:00:19

+0

不,這不會自動發生。最接近這種情況的是放棄'params'並使用適當的重載方法,在那裏你可以明確地爲第一個參數指定默認值,並將第二個參數傳遞給帶有兩個參數的方法。或者,在C#4.0中,我們將擁有可選的命名方法參數。 – 2010-02-24 20:14:46