2010-02-24 6 views
3

Un exemple d'une méthode qui utilise le mot clé params est String.Format("", foo, bar, baz)C# Méthode utilisant Params les mots-clés

Mais comment pourrais-je faire une méthode qui accepte un tableau de énumérations comme ceci:

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); 
    } 
} 

Répondre

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

Parfait, merci! – RyanScottLewis

3

Essayez plutôt

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. WAY trop tard. ;-) –

+0

= p Merci quand même. Savez-vous comment je fusionnerais le tableau de Foo enums avec quelques valeurs par défaut. par exemple, je passe 'MyMethod (Foo.Baz)' mais j'ai 'Foo.Bar' par défaut, donc' foo' serait égal à '[Foo.Bar, Foo.Baz]' – RyanScottLewis

+0

Non cela ne se produirait pas automatiquement pour vous . Le plus proche de cela serait de supprimer 'params' et d'utiliser les méthodes surchargées appropriées, où vous pouvez évidemment spécifier vous-même le défaut par défaut pour le premier argument, et passer le 2ème à la méthode qui prend deux arguments. Sinon, en C# 4.0, nous aurons des paramètres de méthode optionnels et nommés. –