2009-07-31 15 views

Respuesta

25

Con VS2010 RC, pude crear una aplicación .NET 3.5 que utiliza parámetros opcionales en C#.

Así que sí, todo se trata de azúcar sintáctica.

2

No tengo instalado el VS2010 aquí para verificarlo, pero creo que esto sería solo una función de idioma, y ​​por lo tanto debería ser utilizable independientemente del marco al que se apunta.

Editar: Viendo esto link (y algunos otros), parece que los parámetros opcionales compilan los argumentos del método con un atributo [opt] en el il. No sé si este parámetro existía en versiones anteriores del clr, pero aún supongo que sí.

+0

Sí, yo creo que este es el caso , pero no quiero pasar por la instalación de VS2010 cuando todavía no es RTM si no me da esto. –

+2

C# 4.0 reutiliza el atributo que VB usa para ese fin, por lo que ha estado disponible desde 1.0. –

0

VB.NET tiene parámetros opcionales si desea usar parámetros opcionales en .NET 3.5.

+1

Sí, lo sé. Me encantan los parámetros opcionales, pero odio VB. ;) Además, tener una aplicación en 2 idiomas es una especie de kludge si solo necesitas material VB para una o dos clases. –

13

VS 2010 admite parámetros opcionales en C# para soluciones .NET 3.5. Una advertencia, sin embargo, es que el compilador de línea de comandos informará los errores.

Por lo tanto, si tiene compilaciones automatizadas en ejecución, - usando NANT u otra cosa utilizando el compilador de línea de comandos - sus compilaciones fallarán.

+1

Ya por lo que se trata de cambiar su compilación automatizada para usar MSBuild ubicado en el Directorio de Framework 4.0. – Jeff

+0

Estoy enfrentando el mismo problema y, de hecho, no funciona al ejecutar msbuild usando la línea de comandos. Ya estoy usando el msbuild en el directorio del framework 4.0. También probé el parámetro /toolsversion:4.0 y /p:TargetFrameworkVersion=v4.5 ¡pero no tuve suerte! ¡Sigo recibiendo el error CS1644! ¿Alguna idea? – papadi

5

Al igual que Jon Skeet que estaba obteniendo "Característica", el parámetro opcional "no se puede usar porque no es parte de la especificación de lenguaje de 3,0 C#". Sin embargo, en la versión RTM de Visual Studio, puede seleccionar la Versión de idioma como "predeterminada" en Propiedades del proyecto-> Construir-> Avanzado. Eso lo hizo funcionar para mí.

3

Puede usar parámetros opcionales y nombrados en un marco de trabajo específico de una versión anterior siempre que los ensamblados se creen dentro de un entorno de desarrollo para v4 (es decir, VS2010). Pero debe tener en cuenta que en tiempo de ejecución se compilan o publican sitios web, en este caso se utilizará el compilador del marco específico. Y debido a que los compiladores de los marcos anteriores no entienden la sintaxis de los params opcionales y nombrados, se generarán errores en el compilador.

+0

Creo que lo que Frans menciona es un punto importante. Si compila una aplicación de escritorio que llama a un método que usa parámetros opcionales con un marco específico de una versión anterior, digamos 2.0, dentro de VS2012, todo está bien. Pero no podrá crear una aplicación web con un marco de trabajo específico de una versión anterior que llame al mismo método. – heuristican

3

ir a las características del proyecto -> Construir Tab -> botón 'Opciones avanzadas', haga clic en -> versión de idioma establecida en 'default' -> save -> ser feliz;)

Cuestiones relacionadas