2010-05-20 13 views
5

Supposons que vous ayez une méthode avec la signature suivante:Spécification facultative de certains C# en option Paramètres

public void SomeMethod(bool foo = false, bool bar = true) { /* ... */ } 

En appelant cette méthode, est-il un moyen de spécifier une valeur pour bar et non foo? Il ressemblerait à quelque chose comme ...

SomeMethod(_, false); 

... ce qui se traduirait ...

SometMethod(false, false); 

... à la compilation. Est-ce possible?

Répondre

10

Jetez un oeil à des paramètres nommés.

SomeMethod(bar: false); 
+0

Bonne adresse ici: http://geekswithblogs.net/michelotti/archive/2009/01/22/c-4.0-named-parameters-for-better-code-quality.aspx –

+0

Parfait, merci! – Anton

2

Avec C# 4, vous pouvez spécifier des paramètres à des fonctions de 2 façons:

  1. positionnel: Ce qui a été toujours soutenu
  2. Named: Vous pouvez spécifier le nom de chaque paramètre et les mettre dans l'ordre

Avec les paramètres de position, il est impossible de spécifier uniquement le 2ème paramètre par défaut. Avec les paramètres nommés il y a. Il suffit d'omettre le premier paramètre nommé.

est un exemple:

static void test(bool f1 = false, bool f2 = false) 
    { 
     //f1 == false and f2 == true 
    } 

    static void Main(string[] args) 
    { 
     test(f2: true); 
    }