Pregunta

He leído infinidad de blogs, posts y StackOverflow preguntas acerca de las nuevas características de C# 4.0.Incluso los nuevos WPF 4.0 características han comenzado a salir a la luz.Lo que yo no podía encontrar y quisiera saber:

  1. ¿Cuáles son los principales cambios a CLR 4.0 de un C#y WPF desarrollador de perspectiva?
  2. ¿Cuáles son los principales cambios a CLR 4.0 como un todo?

Creo que, internamente, la mayoría de los cambios para la nueva dinámica de las lenguas y de la programación paralela.Pero hay otros importantes mejoras?Porque el lenguaje de las mejoras son sólo eso, mejoras de lenguaje.Sólo falta que el nuevo compilador y esas características puede ser utilizado con una versión anterior .Net, aparte de la versión 1.0/1.1 (al menos la mayoría de ellos pueden ser usados).

Y si las características anteriores son los únicos, sólo por estas características de la versión se cambia a la 4.0, que creo que es de 4.0 debido a que se basa en .Net versión 4.0 (es decir,después de 1.0/1.1, 2.0 & 3.0/3.5).Es la versión incremento justificado?

Editado:

Como Pavel Minaev señaló en los comentarios, incluso esas dos características son CLR independiente.Hubo de velocidad y otras mejoras en 3.0 y 3.5 también.Entonces, ¿por qué el incremento de versión?

¿Fue útil?

Solución

Una nueva CLR cosa, que yo sepa es una forma estructural de la escritura de interfaces, estructuras y a los delegados por el bien de la NoPIA apoyo - básicamente, esto permite que en tiempo de ejecución el tratamiento de distintos tipos de definiciones equivalentes como si fueran el mismo, de manera que si dos conjuntos A y B cada uno tiene un COM-importado de la interfaz IFoo declarado en ellos, con la misma IID y los mismos miembros, en tiempo de ejecución que se los trata como equivalentes tipos;así que si hay una instancia de alguna clase Foo la aplicación de [A]IFoo, usted puede lanzar a [B]IFoo, y el reparto de trabajo.

Otra cosa es la capacidad para albergar a varias versiones del CLR lado-por-lado en un solo proceso.Usted no puede recibir 1.x y 2.0 en un proceso, por ejemplo, pero puede host 2.0 y 4.0.El principal beneficio de esto es la capacidad de carga de plugins por escrito, ya sea para la versión de CLR al mismo tiempo.

Un menor de bits es que un poco más excepciones que se han convertido en uncatchable como StackOverflowException fue en 2.0 - usted no puede contraer la AccessViolationException ya, por ejemplo.

También, aquí es una presentación de PowerPoint en CLR 4.0 de PDC 2008.Podría ser un poco anticuado ahora, pero la mayoría de las cosas que mencionó parece ser que en las betas.

Otros consejos

Hay un gran número de cambios.

En el CLR sí, hay un par de cambios.El recolector de basura está siendo cambiado para apoyar concurrente de la colección de gen0/1 y gen2 en modo de estación de trabajo.También, hay algunos cambios en cómo se implementa la seguridad.El marco paralelo los cambios de algunas de las CLR de la aplicación de la threadpool (que no es totalmente gestionada, pero parte del tiempo de ejecución).También, hay algunos cambios en el sistema de tipos, en su mayoría relacionados con el nuevo PIA apoyo de COM.

Los cambios más grandes son, probablemente, más de la biblioteca/marco de cambios, en lugar de CLR cambios.tales como la integración de la DLR en el marco, y el nuevo tipo dinámico.En cuanto al marco de referencia, usted tiene el reactivo marco, paralelo biblioteca de extensiones, código de contratos, tupla de apoyo, y un montón de pequeños cambios (es decir: Enum.TryParse, Lazy<T>, y un montón de otros pequeños, pero agradable, mejoras).

No creo que haya nuevas instrucciones de IL. El nuevo CLR tiene mejoras en cosas como la alineación y la recolección de basura que hacen el mismo trabajo que el 2.0 CLR, pero mejor. Una máquina virtual (como CLR o JVM) es un concepto abstracto con múltiples implementaciones posibles. Creo que CLR 4.0 es la misma máquina abstracta que en CLR 2.0, solo que con una implementación mejorada.

Incluso las nuevas cosas dinámicas son solo un truco del compilador con nuevas API (a diferencia de Java donde se propone como un nuevo código de operación .)

¡Si estoy equivocado sobre esto, me encantaría saberlo!

Para cada lanzamiento, los equipos de documentación crean " What's new " documentos.

Aquí está el de C # 4.0 Beta2: ¿Qué hay? Nuevo en Visual C # 2010

Y aquí está el de .NET Framework 4.0 Beta2: Novedades en .NET Framework Versión 4

Estas son las listas más completas de cambios que puede encontrar.

Muchas interfaces principales y tipos de delegados en el CLR se han actualizado para admitir covarianza y contravarianza genéricas . Por ejemplo, IEnumerable<T> se ha cambiado a IEnumerable<out T>.

Intenté mirar algunas de las nuevas cosas de C # en Reflector, para ver si hay algo nuevo en:

    Los tipos
  • dinámicos se traducen a objetos , a través de la magia del compilador, que agrega llamadas a la biblioteca para manejar el enlace en tiempo de ejecución.
  • Los parámetros opcionales se manejan a través del compilador. Si llama a Foo (int x = 5), sin especificar un valor para x, verá la llamada como Foo (5) en Reflector.

Así que supongo que los cambios no son nada que pueda detectar fácilmente (como soporte genérico en CLR 2.0).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top