SlideShare ist ein Scribd-Unternehmen logo
1 von 34
Downloaden Sie, um offline zu lesen
Presentando .NET 4.0 Diego  González Pablo Zaidenvoren
Agenda C# 4.0 Dynamic Language Runtime Keyword “dynamic” Co y Contra-Varianza Code Contracts Parametrosopcionales Base Class Library Task Parallel Library Cambios en el IDE
Novedades en C# 4.0
Dynamic Language Runtime
Dinámico vs. Estático
Tiposdinámicos Ruby Python Tiposestáticos VB C# Common Language Runtime Dynamic Language Runtime
Tiposdinámicos Ruby Python Tiposestáticos VB Dynamic Language Runtime C# Common Language Runtime Dynamic Language Runtime
Keyword “dynamic”
Keyword dynamic Permiteutilizar a estructurasdinámicasdesde C#. ClaseDynamicObjectexponecomportamientodinámico.
Demo
Dynamic Language Runtime Un puenteparaoperar con estructurasdinámicas Reduce la complejidad de programación Facilita la implementación de lenguajesdinámicos
Demo DLR
Co-varianzayContra-varianzasegura
Co- and Contra-varianza Los arrays en .NET son co-variantes string[] strings = GetStringArray(); Process(strings); …pero no son co-variantes seguros void Process(object[] objects) { … } voidProcess(object[] objects) { objects[0] = "Hello";       // Ok objects[1] = newButton();  // Exception! } Hasta ahora los generics en C# era invariantes List<string> strings = GetStringList(); Process(strings); C# 4.0 soporta en forma segura co- and contra-varianza voidProcess(IEnumerable<object> objects) { … } void Process(IEnumerable<object> objects) { // IEnumerable<T> is read-only and // therefore safely co-variant }
publicinterfaceIEnumerable<T> { IEnumerator<T> GetEnumerator(); } publicinterfaceIEnumerable<out T> { IEnumerator<T> GetEnumerator(); } Co- and Contra-varianza segura out publicinterfaceIEnumerator<T> {    T Current { get; } boolMoveNext(); } publicinterfaceIEnumerator<out T> {    T Current { get; } boolMoveNext(); } IEnumerable<string> strings = GetStrings(); IEnumerable<object> objects = strings; in publicinterfaceIComparer<T> { int Compare(T x, T y); } publicinterfaceIComparer<in T> { int Compare(T x, T y); } IComparer<object> objComp = GetComparer(); IComparer<string> strComp = objComp;
Code Contracts
Demo
Code Contracts Pre-Condiciones Post-Condiciones Invariantes
Parámetros
Parámetros opcionales Método primario publicStreamReaderOpenTextFile( stringpath, Encodingencoding, booldetectEncoding, intbufferSize); Overloads secundarios publicStreamReaderOpenTextFile( stringpath, Encodingencoding, booldetectEncoding); publicStreamReaderOpenTextFile( stringpath, Encodingencoding); publicStreamReaderOpenTextFile( stringpath); Llamada al primario con valores default
publicStreamReaderOpenTextFile( stringpath, Encodingencoding, booldetectEncoding, intbufferSize); publicStreamReader OpenTextFile(     string path,     Encoding encoding = null,     bool detectEncoding = true,     int bufferSize = 1024); Parámetros opcionales Parametros opcionales Argumentos con nombre OpenTextFile("foo.txt", Encoding.UTF8); OpenTextFile("foo.txt", Encoding.UTF8, bufferSize: 4096); Los argumentos se evaluan en el orden que se escriben Los argumentos con nombre pueden ir en cualquier orden Los argumentos con nombre deben ir al final OpenTextFile(     bufferSize: 4096,     path: "foo.txt",     detectEncoding: false); Los que no son opcionales se deben especificar
Base Class Library
Task Parallel Library
Concurrencia Programming Models Integrated Tooling Programming Models PLINQ Messaging Blocks Parallel Debugger Tool windows Parallel Pattern Library Task Parallel  Library Agents Library Data Structures Concurrency Runtime Concurrency Runtime Data Structures Task Scheduler ThreadPool Profiler Concurrency Analysis Task Scheduler Resource Manager Resource Manager Operating System Threads Key: Managed Library Native Library Tools
Concurrencia Task Scheduler Coordination Data Structures Task Parallel Library Parallel LINQ
Demo
Cambios en IDE
Cambios en IDE Editor totalmenterenovado Diálogo “New Project” mejorado Zoom integrado “Add Reference” másrápido Soportepara F# Herramientaspara debug concurrente
Cambios IDE Call Hierarchy navigation Navigate to symbol Reference highlight Erroressemánticosmejorados
Cambios IDE Debug concurrente Debug histórico Análisis de dumps
Otrasnovedades Side-by-side execution mejorado Lazy Initialization Másespacio en Isolated Storage GC corre en background Memory Mapped Files PIAsintegradas en otras assemblies
¿Preguntas?
[Run Reloaded] Presentando .NET 4.0 (Diego González + Pablo Zaidenvoren)

Weitere ähnliche Inhalte

Was ist angesagt? (19)

Introduccion A Groovy
Introduccion A GroovyIntroduccion A Groovy
Introduccion A Groovy
 
Introducción a Groovy
Introducción a GroovyIntroducción a Groovy
Introducción a Groovy
 
Lenguaje de programacion_c(2)
Lenguaje de programacion_c(2)Lenguaje de programacion_c(2)
Lenguaje de programacion_c(2)
 
¿Porqué Python? ...y Django
¿Porqué Python? ...y Django¿Porqué Python? ...y Django
¿Porqué Python? ...y Django
 
Primeros pasos con Rust
Primeros pasos con RustPrimeros pasos con Rust
Primeros pasos con Rust
 
Python (Lenguaje de Programación)
Python (Lenguaje de Programación)Python (Lenguaje de Programación)
Python (Lenguaje de Programación)
 
Acceder a C desde Python (O viceversa)
Acceder a C desde Python (O viceversa)Acceder a C desde Python (O viceversa)
Acceder a C desde Python (O viceversa)
 
Programacionestructurada
ProgramacionestructuradaProgramacionestructurada
Programacionestructurada
 
Introduccion a go
Introduccion a goIntroduccion a go
Introduccion a go
 
Introduccion a Python
Introduccion a PythonIntroduccion a Python
Introduccion a Python
 
Perl mpi
Perl mpiPerl mpi
Perl mpi
 
Qt jambi
Qt jambiQt jambi
Qt jambi
 
Lenguaje c... trabajo
Lenguaje c... trabajoLenguaje c... trabajo
Lenguaje c... trabajo
 
Copilador
CopiladorCopilador
Copilador
 
Presentacion: ¿Que es Compilador?
Presentacion: ¿Que es Compilador?  Presentacion: ¿Que es Compilador?
Presentacion: ¿Que es Compilador?
 
Crystal: herramientas, uso y creación.
Crystal: herramientas, uso y creación.Crystal: herramientas, uso y creación.
Crystal: herramientas, uso y creación.
 
Lenguaje C
Lenguaje CLenguaje C
Lenguaje C
 
Patron Interprete
Patron InterpretePatron Interprete
Patron Interprete
 
Tutorial de Python
Tutorial de PythonTutorial de Python
Tutorial de Python
 

Andere mochten auch (7)

(20.05.2009) Cumuy Presenta - Más tecnologías interesantes para conocer - PPT 2
(20.05.2009) Cumuy Presenta - Más tecnologías interesantes para conocer - PPT 2(20.05.2009) Cumuy Presenta - Más tecnologías interesantes para conocer - PPT 2
(20.05.2009) Cumuy Presenta - Más tecnologías interesantes para conocer - PPT 2
 
(25.03) RUN 09 - Sesiones Desarrollo - Azure Live
(25.03) RUN 09 - Sesiones Desarrollo - Azure Live(25.03) RUN 09 - Sesiones Desarrollo - Azure Live
(25.03) RUN 09 - Sesiones Desarrollo - Azure Live
 
(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Visión técnica
(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Visión técnica(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Visión técnica
(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Visión técnica
 
(28/05) MOSSCA Invita - Administración de Contenido Empresarial
(28/05) MOSSCA Invita - Administración de Contenido Empresarial(28/05) MOSSCA Invita - Administración de Contenido Empresarial
(28/05) MOSSCA Invita - Administración de Contenido Empresarial
 
[Run Reloaded] Entity Framework 4.0 (Daniel Laco)
[Run Reloaded] Entity Framework 4.0 (Daniel Laco)[Run Reloaded] Entity Framework 4.0 (Daniel Laco)
[Run Reloaded] Entity Framework 4.0 (Daniel Laco)
 
CodeCamp 2010 | Efectos especiales con Silverlight
CodeCamp 2010 | Efectos especiales con SilverlightCodeCamp 2010 | Efectos especiales con Silverlight
CodeCamp 2010 | Efectos especiales con Silverlight
 
CodeCamp 2010 | FBI- Fácil Business Intelligence
CodeCamp 2010 | FBI- Fácil Business IntelligenceCodeCamp 2010 | FBI- Fácil Business Intelligence
CodeCamp 2010 | FBI- Fácil Business Intelligence
 

Ähnlich wie [Run Reloaded] Presentando .NET 4.0 (Diego González + Pablo Zaidenvoren)

Ähnlich wie [Run Reloaded] Presentando .NET 4.0 (Diego González + Pablo Zaidenvoren) (20)

Moviles
MovilesMoviles
Moviles
 
Moviles
MovilesMoviles
Moviles
 
Programación en C#.pptx
Programación en C#.pptxProgramación en C#.pptx
Programación en C#.pptx
 
Clase 1.pdf
Clase 1.pdfClase 1.pdf
Clase 1.pdf
 
Csharp
CsharpCsharp
Csharp
 
Aprendizaje de Lenguaje de Programación Python
Aprendizaje de Lenguaje de Programación PythonAprendizaje de Lenguaje de Programación Python
Aprendizaje de Lenguaje de Programación Python
 
Desarrollo de Aplicaciones Metro en Windows 8
Desarrollo de Aplicaciones Metro en Windows 8Desarrollo de Aplicaciones Metro en Windows 8
Desarrollo de Aplicaciones Metro en Windows 8
 
Portafolio de evidencias
Portafolio de evidenciasPortafolio de evidencias
Portafolio de evidencias
 
 
Portafolio de evidencias
Portafolio de evidenciasPortafolio de evidencias
Portafolio de evidencias
 
Dce0 programacion oo_c__vbnet
Dce0 programacion oo_c__vbnetDce0 programacion oo_c__vbnet
Dce0 programacion oo_c__vbnet
 
Java Ago Dic07
Java Ago Dic07Java Ago Dic07
Java Ago Dic07
 
Primera Clase
Primera ClasePrimera Clase
Primera Clase
 
Curso introduccionphp sql
Curso introduccionphp sqlCurso introduccionphp sql
Curso introduccionphp sql
 
Guiacursophp sql
Guiacursophp sqlGuiacursophp sql
Guiacursophp sql
 
excelente Tutorial aprendizaje de Python3.pdf
excelente Tutorial aprendizaje de Python3.pdfexcelente Tutorial aprendizaje de Python3.pdf
excelente Tutorial aprendizaje de Python3.pdf
 
Python en Android
Python en AndroidPython en Android
Python en Android
 
Portafolio de evidencias actividades
Portafolio de evidencias actividadesPortafolio de evidencias actividades
Portafolio de evidencias actividades
 
El tutorial PYTHON EMERSON EDUARDO RODRIGUES
El tutorial PYTHON  EMERSON EDUARDO RODRIGUESEl tutorial PYTHON  EMERSON EDUARDO RODRIGUES
El tutorial PYTHON EMERSON EDUARDO RODRIGUES
 
El tutorial de pythonnnn
El tutorial de pythonnnnEl tutorial de pythonnnn
El tutorial de pythonnnn
 

Mehr von Microsoft Argentina y Uruguay [Official Space]

Mehr von Microsoft Argentina y Uruguay [Official Space] (20)

CodeCamp 2010 | Diez formas de escribir código (in)seguro
CodeCamp 2010 | Diez formas de escribir código (in)seguroCodeCamp 2010 | Diez formas de escribir código (in)seguro
CodeCamp 2010 | Diez formas de escribir código (in)seguro
 
CodeCamp 2010 | Hyper-V en Windows Server 2008 R2 e interoperabilidad con Linux
CodeCamp 2010 | Hyper-V en Windows  Server 2008 R2 e interoperabilidad con LinuxCodeCamp 2010 | Hyper-V en Windows  Server 2008 R2 e interoperabilidad con Linux
CodeCamp 2010 | Hyper-V en Windows Server 2008 R2 e interoperabilidad con Linux
 
CodeCamp 2010 | Productividad mas allá de la velocidad de tus dedos (cazzulin...
CodeCamp 2010 | Productividad mas allá de la velocidad de tus dedos (cazzulin...CodeCamp 2010 | Productividad mas allá de la velocidad de tus dedos (cazzulin...
CodeCamp 2010 | Productividad mas allá de la velocidad de tus dedos (cazzulin...
 
CodeCamp 2010 | Un paseo por WCF 4.0
CodeCamp 2010 | Un paseo por WCF 4.0CodeCamp 2010 | Un paseo por WCF 4.0
CodeCamp 2010 | Un paseo por WCF 4.0
 
CodeCamp 2010 | Desarrollo de videojuegos fuera de control
CodeCamp 2010 | Desarrollo de videojuegos fuera de controlCodeCamp 2010 | Desarrollo de videojuegos fuera de control
CodeCamp 2010 | Desarrollo de videojuegos fuera de control
 
CodeCamp 2010 | Recorriendo ocs 2010
CodeCamp 2010 | Recorriendo ocs 2010CodeCamp 2010 | Recorriendo ocs 2010
CodeCamp 2010 | Recorriendo ocs 2010
 
Novedades de vs 2010 y net 40
Novedades de vs 2010 y net 40Novedades de vs 2010 y net 40
Novedades de vs 2010 y net 40
 
Run 2 0 keynote azure
Run 2 0 keynote azureRun 2 0 keynote azure
Run 2 0 keynote azure
 
Run 20 Track SQL Server
Run 20 Track SQL ServerRun 20 Track SQL Server
Run 20 Track SQL Server
 
Run 20 programando sobre sharepoint 2010
Run 20 programando sobre sharepoint 2010Run 20 programando sobre sharepoint 2010
Run 20 programando sobre sharepoint 2010
 
(25.03) RUN 09 - Sesiones Desarrollo - SI 2.0
(25.03) RUN 09 - Sesiones Desarrollo - SI 2.0(25.03) RUN 09 - Sesiones Desarrollo - SI 2.0
(25.03) RUN 09 - Sesiones Desarrollo - SI 2.0
 
(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Services 3
(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Services 3(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Services 3
(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Services 3
 
(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Moss
(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Moss(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Moss
(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Moss
 
(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Mapa De Ruta
(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Mapa De Ruta(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Mapa De Ruta
(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Mapa De Ruta
 
(27.05) MOSSCA Invita - Búsqueda empresarial 2
(27.05) MOSSCA Invita - Búsqueda empresarial 2(27.05) MOSSCA Invita - Búsqueda empresarial 2
(27.05) MOSSCA Invita - Búsqueda empresarial 2
 
(27.05) MOSSCA Invita - Búsqueda empresarial 1
(27.05) MOSSCA Invita - Búsqueda empresarial 1(27.05) MOSSCA Invita - Búsqueda empresarial 1
(27.05) MOSSCA Invita - Búsqueda empresarial 1
 
(22.04.2009) Cumuy Presenta - Novedades en la plataforma de desarrollo .NET ...
(22.04.2009) Cumuy Presenta -  Novedades en la plataforma de desarrollo .NET ...(22.04.2009) Cumuy Presenta -  Novedades en la plataforma de desarrollo .NET ...
(22.04.2009) Cumuy Presenta - Novedades en la plataforma de desarrollo .NET ...
 
(25.03) RUN 09 - Sesiones Desarrollo - WPF Silverlight
(25.03) RUN 09 - Sesiones Desarrollo - WPF Silverlight(25.03) RUN 09 - Sesiones Desarrollo - WPF Silverlight
(25.03) RUN 09 - Sesiones Desarrollo - WPF Silverlight
 
(18.03.2009) Cumuy Invita - Iniciando el año conociendo nuevas tecnologías - ...
(18.03.2009) Cumuy Invita - Iniciando el año conociendo nuevas tecnologías - ...(18.03.2009) Cumuy Invita - Iniciando el año conociendo nuevas tecnologías - ...
(18.03.2009) Cumuy Invita - Iniciando el año conociendo nuevas tecnologías - ...
 
(20.05.2009) Cumuy Presenta - Más tecnologías interesantes para conocer - PPT 1
(20.05.2009) Cumuy Presenta - Más tecnologías interesantes para conocer - PPT 1(20.05.2009) Cumuy Presenta - Más tecnologías interesantes para conocer - PPT 1
(20.05.2009) Cumuy Presenta - Más tecnologías interesantes para conocer - PPT 1
 

[Run Reloaded] Presentando .NET 4.0 (Diego González + Pablo Zaidenvoren)

  • 1.
  • 2. Presentando .NET 4.0 Diego González Pablo Zaidenvoren
  • 3. Agenda C# 4.0 Dynamic Language Runtime Keyword “dynamic” Co y Contra-Varianza Code Contracts Parametrosopcionales Base Class Library Task Parallel Library Cambios en el IDE
  • 7. Tiposdinámicos Ruby Python Tiposestáticos VB C# Common Language Runtime Dynamic Language Runtime
  • 8. Tiposdinámicos Ruby Python Tiposestáticos VB Dynamic Language Runtime C# Common Language Runtime Dynamic Language Runtime
  • 10. Keyword dynamic Permiteutilizar a estructurasdinámicasdesde C#. ClaseDynamicObjectexponecomportamientodinámico.
  • 11. Demo
  • 12. Dynamic Language Runtime Un puenteparaoperar con estructurasdinámicas Reduce la complejidad de programación Facilita la implementación de lenguajesdinámicos
  • 15. Co- and Contra-varianza Los arrays en .NET son co-variantes string[] strings = GetStringArray(); Process(strings); …pero no son co-variantes seguros void Process(object[] objects) { … } voidProcess(object[] objects) { objects[0] = "Hello"; // Ok objects[1] = newButton(); // Exception! } Hasta ahora los generics en C# era invariantes List<string> strings = GetStringList(); Process(strings); C# 4.0 soporta en forma segura co- and contra-varianza voidProcess(IEnumerable<object> objects) { … } void Process(IEnumerable<object> objects) { // IEnumerable<T> is read-only and // therefore safely co-variant }
  • 16. publicinterfaceIEnumerable<T> { IEnumerator<T> GetEnumerator(); } publicinterfaceIEnumerable<out T> { IEnumerator<T> GetEnumerator(); } Co- and Contra-varianza segura out publicinterfaceIEnumerator<T> { T Current { get; } boolMoveNext(); } publicinterfaceIEnumerator<out T> { T Current { get; } boolMoveNext(); } IEnumerable<string> strings = GetStrings(); IEnumerable<object> objects = strings; in publicinterfaceIComparer<T> { int Compare(T x, T y); } publicinterfaceIComparer<in T> { int Compare(T x, T y); } IComparer<object> objComp = GetComparer(); IComparer<string> strComp = objComp;
  • 18. Demo
  • 19. Code Contracts Pre-Condiciones Post-Condiciones Invariantes
  • 21. Parámetros opcionales Método primario publicStreamReaderOpenTextFile( stringpath, Encodingencoding, booldetectEncoding, intbufferSize); Overloads secundarios publicStreamReaderOpenTextFile( stringpath, Encodingencoding, booldetectEncoding); publicStreamReaderOpenTextFile( stringpath, Encodingencoding); publicStreamReaderOpenTextFile( stringpath); Llamada al primario con valores default
  • 22. publicStreamReaderOpenTextFile( stringpath, Encodingencoding, booldetectEncoding, intbufferSize); publicStreamReader OpenTextFile( string path, Encoding encoding = null, bool detectEncoding = true, int bufferSize = 1024); Parámetros opcionales Parametros opcionales Argumentos con nombre OpenTextFile("foo.txt", Encoding.UTF8); OpenTextFile("foo.txt", Encoding.UTF8, bufferSize: 4096); Los argumentos se evaluan en el orden que se escriben Los argumentos con nombre pueden ir en cualquier orden Los argumentos con nombre deben ir al final OpenTextFile( bufferSize: 4096, path: "foo.txt", detectEncoding: false); Los que no son opcionales se deben especificar
  • 25. Concurrencia Programming Models Integrated Tooling Programming Models PLINQ Messaging Blocks Parallel Debugger Tool windows Parallel Pattern Library Task Parallel Library Agents Library Data Structures Concurrency Runtime Concurrency Runtime Data Structures Task Scheduler ThreadPool Profiler Concurrency Analysis Task Scheduler Resource Manager Resource Manager Operating System Threads Key: Managed Library Native Library Tools
  • 26. Concurrencia Task Scheduler Coordination Data Structures Task Parallel Library Parallel LINQ
  • 27. Demo
  • 29. Cambios en IDE Editor totalmenterenovado Diálogo “New Project” mejorado Zoom integrado “Add Reference” másrápido Soportepara F# Herramientaspara debug concurrente
  • 30. Cambios IDE Call Hierarchy navigation Navigate to symbol Reference highlight Erroressemánticosmejorados
  • 31. Cambios IDE Debug concurrente Debug histórico Análisis de dumps
  • 32. Otrasnovedades Side-by-side execution mejorado Lazy Initialization Másespacio en Isolated Storage GC corre en background Memory Mapped Files PIAsintegradas en otras assemblies