2010-08-04 15 views
7

Creé un nuevo proyecto en Visual Studio con target framework 2.0. Pero incluso si dejara en algún lugar la palabra clave var, Visual Studio compila con éxito el proyecto. ¿Es este el comportamiento correcto ya que var es la función 3.0? ¿Hay alguna configuración para evitar que se compile código con var?Cómo deshabilitar la palabra clave var bajo el objetivo .net 2.0?

Respuesta

14

var es una característica de C# 3.0, pero no requiere ningún marco características. En otras palabras, es absolutamente correcto utilizarlo dentro de un proyecto dirigido a .NET 2.0. Lo mismo ocurre con muchas otras características: tipos anónimos, propiedades automáticas, expresiones lambda, etc.

Consulte mi versions article para obtener más información. (Necesito actualizarlo para C# 4 en algún momento ...)

Si quiere para restringirse a C# 2.0, puede especificar la versión del idioma haciendo clic en "Avanzado" en la pestaña Generar del propiedades del proyecto, IIRC. (Definitivamente hay algún lugar, pero prefiero tomar una taza de café que comprobar la ubicación exacta en este momento).

+3

+1./langversion (Opciones del compilador C#) (http://msdn.microsoft.com/en-us/library/f4ckecs0.aspx) – desco

+0

¡Gracias Jon y Desco! Esto es exactamente lo que quiero: restringir las funciones del lenguaje a C# 2.0. – DixonD

1

Siempre que su proyecto siempre se compile con Visual Studio 2008 o posterior, está a salvo para usar las características de C# 3.0. El objetivo de .NET 2.0 solo restringe las bibliotecas que puede usar, no las funciones de idioma.

+0

El propósito por el que necesito restringir mi código a 2.0 se supone que se compilará bajo .NET Framework 2.0 puro posteriormente. – DixonD

3

var es puramente una función de tiempo de compilación, una vez que se compila el montaje, el compilador inserta el real tipo y el hecho de que se hubiera usado var se "pierde".

De modo que un proyecto que se dirige a la versión 2.0 del marco de trabajo aún puede hacer uso de la característica var, porque de hecho no afecta al ensamblaje de salida.

-1

O bien reemplazar el texto completo de var por 1var1 y reemplazarlo manualmente o usar versiones previas del compilador.

Cuestiones relacionadas