2010-05-20 17 views
5

Suponga que tiene un método con la siguiente firma:Especificación facultativa de algunos parámetros opcionales C#

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

Cuando se llama a este método, es que hay una forma de especificar un valor para bar y no foo? Se vería algo así como ...

SomeMethod(_, false); 

... lo que se traduciría a ...

SometMethod(false, false); 

... en tiempo de compilación. es posible?

Respuesta

10

Tome un vistazo a los parámetros con nombre.

SomeMethod(bar: false); 
+0

Buen recurso aquí: http://geekswithblogs.net/michelotti/archive/2009/01/22/c-4.0-named-parameters-for-better-code-quality.aspx –

+0

Perfecto, gracias! – Anton

2

con C# 4 puede especificar los parámetros a funciones de 2 maneras:

  1. Posicional: Lo que siempre contó con el apoyo
  2. Named: Puede especificar el nombre de cada parámetro y ponerlos en cualquier orden

Con los parámetros posicionales, no hay forma de especificar solo el 2º parámetro predeterminado. Con parámetros nombrados hay. Simplemente omita el primer parámetro nombrado.

Aquí se muestra un ejemplo:

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

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