c# - versiones - what is the last version of.net framework
¿Hay una lista de cambios para C#4.0 que funcionan en.Net 3.5? (5)
El compilador de C # en 4.0 incluye una nueva característica de multitarea. La versión corta es que producirá un ensamblaje con cualquier versión de metadatos presente en la referencia que define System.Object (generalmente mscorlib.dll). Esto le permite usarlo para compilar ensamblajes para 2.0 y 3.5, así como varias versiones de Silverlight. Esta característica se introdujo en el soporte de la multitarea en Visual Studio 2010.
Por lo tanto, puede usar el compilador C # 4.0 para compilar ensamblados 3.5 y hacer uso de las características de C # 4 que desee, siempre que no haya una dependencia particular de las bibliotecas 4.0. Por ejemplo, los argumentos con nombre y los parámetros opcionales funcionarán bien, ya que no usan ninguna característica del marco 4.0. Sin embargo, la dinámica sí lo hace, y por lo tanto, no funcionará en 3.5.
Hay un post sobre esto aquí, que cubre los conceptos básicos.
http://blogs.msdn.com/ed_maurer/archive/2010/03/31/multi-targeting-and-the-c-and-vb-compilers.aspx
La lista corta (de la publicación de Ed) es:
- argumentos nombrados y parámetros opcionales
- ciertas mejoras de sintaxis COM (por ejemplo, "omit ref")
- variación genérica
Las cosas que no funcionarán incluyen dinámico y no-pia (nuestros dos mayores desembolsos en términos de tiempo dedicado a su implementación). El primero requiere soporte de marco y el segundo requiere soporte de tiempo de ejecución.
He estado viendo muchos cambios en C # 4.0 últimamente. Realmente me gustan algunos de ellos. Sin embargo, también, no quiero pasar a .Net 4.0 por razones de compatibilidad todavía.
Entonces, ¿hay una lista completa de las nuevas características de lenguaje C # 4.0 que funcionarán en .Net 3.5 o inferior?
Como ejemplo, ¿los parámetros predeterminados requieren el CLR .NET 4.0 o son una característica del compilador? Es posible usar propiedades automáticas (una característica de C # 3.0) y seguir apuntando a .NET 2.0, ya que no requiere soporte de Framework, pero no usar expresiones LINQ, ya que requiere Framework 3.5.
No digas "por supuesto que C # 4.0 no funcionará en .Net 3.5 porque es más antiguo"
Estoy pensando en los cambios a la especificación "antigua" ... el cambio de lock
no estará disponible, ya que eso requiere una nueva sobrecarga, pero el cambio de "eventos similares a campos" debería funcionar. Tendré que comprobar qué emite el compilador ;-p
Y por supuesto,
using System;
class Program
{
public event EventHandler SomeHandler;
static void Main() { }
}
obtiene los nuevos accesorios de estilo ;-p
No es una lista, ni tampoco es definitiva, pero como ejemplo, simplemente configuré un nuevo proyecto VS2010 dirigido a .NET 3.5 y creé exitosamente un método con parámetros predeterminados, y lo llamé con argumentos con nombre, ambos de los cuales son características de C # 4.0 .
Sé que la covarianza y la contravarianza tuvieron algo de apoyo a través de las anotaciones de IL + y - en los parámetros de tipo en el CLR 2.0. Aunque no estoy seguro de las otras características.
Teniendo en cuenta que los parámetros predeterminados ya eran una característica de VB.NET, es posible que C # solo lo haya implementado en el nivel del compilador. Sin embargo, el equipo de CLR podría haber implementado una nueva forma de hacerlo.
Ya debería modificar su pregunta para indicar "qué características de C # 4.0 son los cambios del compilador que se aplicarían al marco .NET 3.5"