Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

255
Vistas
¿Por qué se compila el código específico de .NET 4.6 cuando se dirige a versiones anteriores del marco?

Tengo un proyecto que apunta a versiones anteriores del marco .NET (.NET 4.5.2). Instalé Visual Studio 2015 (y, por lo tanto, .NET 4.6 en mi máquina). Me di cuenta de que si uso las características del lenguaje C# lanzadas en .NET 4.6/C# 6, aún se compila. Si el marco de destino de mi proyecto es <.NET 4.6, ¿no debería compilar esto?

 public string MyExpressionBodyProperty => "1"; //auto properties are new in C# 6 public string MyAutoProperty { get; } = "1"; private static void MethodThatUsesNameOf(string filename) { if (filename == null) { //nameof was released in C# 6 throw new ArgumentException("The file does not exist.", nameof(filename)); } }

¿Cómo puedo asegurarme de que solo estoy usando funciones de lenguaje .NET que funcionan con la versión del marco de trabajo a la que me dirijo?

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

La versión de .NET Framework y la versión del lenguaje C# son cosas diferentes. Las características del lenguaje C# 6

 public string MyAutoProperty { get; } = "1"; nameof(filename)

puede ser compilado por VS 2015 en un código que apunta a marcos anteriores.

¿Cómo puedo asegurarme de que solo estoy usando funciones de lenguaje .NET que funcionan con la versión del marco de trabajo a la que me dirijo?

Si intenta usar una característica de .NET 4.6 Framework, obtendrá un error de compilación apropiado si tiene como objetivo un marco anterior.

¿Podría implementar este código en una máquina que no tuviera .NET 4.6?

Sí, lo harías. Siempre que la máquina de implementación tenga un marco compatible con el objetivo en VS2015.

over 4 years ago · Santiago Trujillo Denunciar

0

Hay funciones de C# 6 y funciones de .NET 4.6.

nameof es una función de C# 6, por lo que solo necesita ejecutarse en un compilador más nuevo, pero aún puede usar el marco .NET anterior.

Un ejemplo de una característica que requiere .NET 4.6 es el siguiente:

 public void Foo(IReadOnlyCollection<string> input) { } public void Main(string[] args) { Foo(new Stack<string>()); }

En .NET 4.6 Stack implementa IReadOnlyCollection pero en versiones anteriores no. El código anterior no se compilaría si seleccionó .NET 4.5.2 como su plataforma de destino.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda