Control de versiones del lenguaje C#C# language versioning

El compilador de C# determina una versión de lenguaje predeterminada basada en los marcos o las plataformas de destino del proyecto.The C# compiler determines a default language version based on your project's target framework or frameworks. Esto se debe a que el lenguaje C# puede tener características que se basan en tipos o componentes en tiempo de ejecución que no están disponibles en cada implementación de. NET.This is because the C# language may have features that rely on types or runtime components that are not available in every .NET implementation. Esto también garantiza que, para cualquier destino para el cual se compiló el proyecto, obtendrá la última versión de lenguaje compatible de forma predeterminada.This also ensures that for whatever target your project is built against, you get the highest compatible language version by default.

Valores predeterminadosDefaults

El compilador determina un valor predeterminado según estas reglas:The compiler determines a default based on these rules:

Marco de destinoTarget framework versionversion Versión predeterminada del lenguaje C#C# language version default
Núcleo de .NET.NET Core 3.x3.x C# 8.0C# 8.0
Núcleo de .NET.NET Core 2.x2.x C# 7.3C# 7.3
.NET Standard.NET Standard todoall C# 7.3C# 7.3
.NET Framework.NET Framework todoall C# 7.3C# 7.3

Valor predeterminado para las versiones preliminaresDefault for previews

Cuando el proyecto tiene como destino un marco en versión preliminar que tenga una versión de lenguaje preliminar correspondiente, la versión de lenguaje que se usa es la que está en versión preliminar.When your project targets a preview framework that has a corresponding preview language version, the language version used is the preview language version. Esto asegura que puede usar las características más recientes que se garantiza que funcionen con esa versión preliminar en cualquier entorno sin que afecte a los proyectos que tienen como destino una versión de .NET Core.This ensures that you can use the latest features that are guaranteed to work with that preview in any environment without affecting your projects that target a released .NET Core version.

Invalidación de un valor predeterminadoOverride a default

Si debe especificar su versión de C# explícitamente, puede hacerlo de varias maneras:If you must specify your C# version explicitly, you can do so in several ways:

Edición del archivo del proyectoEdit the project file

Puede establecer la versión del lenguaje en el archivo del proyecto.You can set the language version in your project file. Por ejemplo, si quiere acceder explícitamente a las características en versión preliminar, agregue un elemento similar al siguiente:For example, if you explicitly want access to preview features, add an element like this:

<PropertyGroup>
   <LangVersion>preview</LangVersion>
</PropertyGroup>

El valor preview usa la versión preliminar más reciente disponible del lenguaje C# que admite el compilador.The value preview uses the latest available preview C# language version that your compiler supports.

Configurar varios proyectosConfigure multiple projects

Puede crear un archivo Directory.Build.props que contenga el elemento <LangVersion> para configurar varios directorios.You can create a Directory.Build.props file that contains the <LangVersion> element to configure multiple directories. Por lo general, esto se hace en el directorio de la solución.You typically do that in your solution directory. Agregue lo siguiente a un archivo Directory.Build.props en el directorio de la solución:Add the following to a Directory.Build.props file in your solution directory:

<Project>
 <PropertyGroup>
   <LangVersion>preview</LangVersion>
 </PropertyGroup>
</Project>

Ahora, las compilaciones de cada subdirectorio del directorio que contenga ese archivo usarán la sintaxis de la versión preliminar de C#.Now, builds in every subdirectory of the directory containing that file will use the preview C# version. Para obtener más información, consulte el artículo Personalizar una compilación.For more information, see the article on Customize your build.

Referencia de la versión del lenguaje C#C# language version reference

En la siguiente tabla se muestran las versiones actuales del lenguaje C#.The following table shows all current C# language versions. El compilador no entenderá necesariamente todos los valores si es más antiguo.Your compiler may not necessarily understand every value if it is older. Si instala .NET Core 3.0, tendrá acceso a todo lo que aparece.If you install .NET Core 3.0, then you will have access to everything listed.

ValorValue SignificadoMeaning
previewpreview El compilador acepta toda la sintaxis de lenguaje válida de la última versión preliminar.The compiler accepts all valid language syntax from the latest preview version.
latestlatest El compilador acepta la sintaxis de la última versión del compilador (incluida las versión secundaria).The compiler accepts syntax from the latest released version of the compiler (including minor version).
latestMajorlatestMajor El compilador acepta la sintaxis de la versión principal más reciente del compilador.The compiler accepts syntax from the latest released major version of the compiler.
8.08.0 El compilador acepta solo la sintaxis que se incluye en C# 8.0 o versiones anteriores.The compiler accepts only syntax that is included in C# 8.0 or lower.
7.37.3 El compilador acepta solo la sintaxis que se incluye en C# 7.3 o versiones anteriores.The compiler accepts only syntax that is included in C# 7.3 or lower.
7.27.2 El compilador acepta solo la sintaxis que se incluye en C# 7.2 o versiones anteriores.The compiler accepts only syntax that is included in C# 7.2 or lower.
7.17.1 El compilador acepta solo la sintaxis que se incluye en C# 7.1 o versiones anteriores.The compiler accepts only syntax that is included in C# 7.1 or lower.
77 El compilador acepta solo la sintaxis que se incluye en C# 7.0 o versiones anteriores.The compiler accepts only syntax that is included in C# 7.0 or lower.
66 El compilador acepta solo la sintaxis que se incluye en C# 6.0 o versiones anteriores.The compiler accepts only syntax that is included in C# 6.0 or lower.
55 El compilador acepta solo la sintaxis que se incluye en C# 5.0 o versiones anteriores.The compiler accepts only syntax that is included in C# 5.0 or lower.
44 El compilador acepta solo la sintaxis que se incluye en C# 4.0 o versiones anteriores.The compiler accepts only syntax that is included in C# 4.0 or lower.
33 El compilador acepta solo la sintaxis que se incluye en C# 3.0 o versiones anteriores.The compiler accepts only syntax that is included in C# 3.0 or lower.
ISO-2ISO-2 El compilador acepta solo la sintaxis que se incluye en ISO/IEC 23270:2006 C# (2.0)The compiler accepts only syntax that is included in ISO/IEC 23270:2006 C# (2.0)
ISO-1ISO-1 El compilador acepta solo la sintaxis que se incluye en ISO/IEC 23270:2003 C# (1.0/1.2)The compiler accepts only syntax that is included in ISO/IEC 23270:2003 C# (1.0/1.2)