8

Tengo curiosidad por saber si el parámetro opcional introducido en C# 4 es compatible con versiones anteriores o no?¿El parámetro opcional en C# 4 es compatible con versiones anteriores?

Déjenme aclarar mi pregunta con un simple ejemplo. Supongamos que yo escribo el siguiente código en C# 4 en .NET2 en VS2010:

public void Foo(int val1, int val2, int val3 = 5){ .... } 

Ahora compila el código, hacer una DLL y referencia a un 2/C proyecto de C# # 3 en .NET2. En el editor de código (que no sea VS2010, digamos VS2008) ¿qué veré en intellisense?

  1. Dos métodos sobrecargados como:

    public void Foo(int val1, int val2) 
    public void Foo(int val1, int val2, int val3) 
    
  2. algo más como:

    public void Foo(int val1, int val2, int val3) 
    public void Foo(int val1, int val2, int val3 = 5) //VS2008 is not supposed to show this 
    

¿Cómo se supone que debo llamar al método C# 4 en el proyecto de C# 2 ?

Respuesta

9

Simplemente será un método: el compilador C# no crea sobrecargas. Será como si estuvieras llamando a un método creado en VB.NET con parámetros opcionales: han estado en .NET desde el principio. Es solo que el compilador C# 2 no sabrá cómo tratar con ellos, por lo que tendrá que especificar todos los argumentos usted mismo.

Los parámetros básicamente opcionales solo cambian cómo se llaman los métodos. Si hay un método como este:

public void Foo(int x = 10, int y = 20) 

y se llama así:

Foo(15); 

el compilador de C# 4 cambiará el lado llamando a:

Foo(15, 20); 

El C# 2 compilador no puede hacer eso, por lo que tendría que especificar ambos argumentos.

+0

Muchas gracias. Aclara mi pregunta Gracias. –

9

Verá un único método que tiene todos los parámetros.

Los métodos con parámetros opcionales en C# 4 y cada versión de VB se compilan como un único método con metadatos CIL que indican qué parámetros son opcionales y cuáles son sus valores predeterminados.
C# 3 (tanto el compilador como IntelliSense de Visual Studio) ignoran estos metadatos.

Para obtener más información, vea here.

Cuestiones relacionadas