SlideShare uma empresa Scribd logo
1 de 24
Carmen Checa
Nacho Fanjul
BCN· FOURSESSIONS
20 - Febrero
Carmen Checa
@cmcheca
Senior Developer
ccheca@pasiona.com@
Nacho Fanjul
Senior Developer
@nfanjul
nfanjul@pasiona.com@
Introducción, un poquito de historia
El nombre del lenguaje es un juego que esta inspirado en la notación musical,
donde el “#” (en términos musicales es sostenido) indica que la nota (C en ingles se
corresponde con do) es un semitono más alta, dando a entender esto que C# es
superior tanto a C como a C++.
Además, el signo “#” se compone de cuatro signos “+” pegados.
Evolución
C# 1.0 C# 2.0 C# 6.0C# 5.0C# 4.0C# 3.0
Managed
Code
Anonymous
Methods
Generics
Convariance
Contavarian
ce
Partial
Class
Nullable
Type
Extension
Method
Lambda
Expressions
Linq
Anonymous
Types
Expression
Tree
Implicit
Type (var)
Named
Arguments
Late
Binding
More COM
Support
Opcional
Parameters
Caller
Information
Async
¿Qué hay
de nuevo,
viejo?
Antes de empezar, ¿Qué necesitamos?
¿Qué nos aporta?
• Código mas compacto.
• Código mas legible.
• Mejor organización de nuestro código.
• NO grandes cambios.
Nuevas funcionalidades
Filtros en las excepciones
“await” en los bloques catch y finally
Mejoras
nameOf()
Inicialización de propiedades
Importar miembros estáticos
Nullables ?.
Miembros indexados e inicialización de
elementos
Interpolación en los strings
Expresiones en el cuerpo del método
Viejo vs Nuevo
Viejo vs Nuevo
Un par de cosas mas
Ummmmmmmmmm…
Novedades Visual Studio 2015
• Renombrado inteligente de variables.
• Nuevos refactorings como Introduce Local y Inline Temporary Variable.
• Avisos para saber dónde podemos mejorar nuestro código.
• Coloreado de sintaxis en vista rápida.
• Gestión más inteligente de nombres de variables en el Intellisense.
Roslyn
• Es el nuevo compilador de C# y Visual Basic.
• Redefinido la arquitectura.
• Open Source.
github.com/dotnet/roslyn
Q&ACarmen Checa & Nacho Fanjul
@cmcheca
@nfanjul
ccheca@pasiona.com
nfanjul@pasiona.com
@
Designed by
BCN· FOURSESSIONS
| 20-Febrero

Mais conteúdo relacionado

Mais de Nacho Fanjul Corteguera

Los test de integración tambien merecen tener vida: AzureDevOps para dar ALMa...
Los test de integración tambien merecen tener vida:AzureDevOps para dar ALMa...Los test de integración tambien merecen tener vida:AzureDevOps para dar ALMa...
Los test de integración tambien merecen tener vida: AzureDevOps para dar ALMa...Nacho Fanjul Corteguera
 
Creando aplicaciones multi-tenant [Opensouthcode 2019]
Creando aplicaciones multi-tenant [Opensouthcode 2019]Creando aplicaciones multi-tenant [Opensouthcode 2019]
Creando aplicaciones multi-tenant [Opensouthcode 2019]Nacho Fanjul Corteguera
 
Azure messaging! La comparación definitiva
Azure messaging! La comparación definitivaAzure messaging! La comparación definitiva
Azure messaging! La comparación definitivaNacho Fanjul Corteguera
 
Event Grid, ¿colega que pasa en mi nube? 2.0
Event Grid, ¿colega que pasa en mi nube? 2.0Event Grid, ¿colega que pasa en mi nube? 2.0
Event Grid, ¿colega que pasa en mi nube? 2.0Nacho Fanjul Corteguera
 
Event Grid, ¿colega que pasa en mi nube?
Event Grid, ¿colega que pasa en mi nube? Event Grid, ¿colega que pasa en mi nube?
Event Grid, ¿colega que pasa en mi nube? Nacho Fanjul Corteguera
 
¿Cómo mezclar agua con aceite? NodeJS + Azure
¿Cómo mezclar agua con aceite? NodeJS + Azure ¿Cómo mezclar agua con aceite? NodeJS + Azure
¿Cómo mezclar agua con aceite? NodeJS + Azure Nacho Fanjul Corteguera
 
¿Cómo mezclar agua con aceite? NodeJS + Azure
¿Cómo mezclar agua con aceite? NodeJS + Azure¿Cómo mezclar agua con aceite? NodeJS + Azure
¿Cómo mezclar agua con aceite? NodeJS + AzureNacho Fanjul Corteguera
 
Web app, el arte del botón derecho -> Publicar
Web app, el arte del botón derecho -> PublicarWeb app, el arte del botón derecho -> Publicar
Web app, el arte del botón derecho -> PublicarNacho Fanjul Corteguera
 
Azure web app. Botón derecho --> publicar
Azure web app. Botón derecho --> publicarAzure web app. Botón derecho --> publicar
Azure web app. Botón derecho --> publicarNacho Fanjul Corteguera
 

Mais de Nacho Fanjul Corteguera (18)

Los test de integración tambien merecen tener vida: AzureDevOps para dar ALMa...
Los test de integración tambien merecen tener vida:AzureDevOps para dar ALMa...Los test de integración tambien merecen tener vida:AzureDevOps para dar ALMa...
Los test de integración tambien merecen tener vida: AzureDevOps para dar ALMa...
 
Creando aplicaciones multi-tenant [Opensouthcode 2019]
Creando aplicaciones multi-tenant [Opensouthcode 2019]Creando aplicaciones multi-tenant [Opensouthcode 2019]
Creando aplicaciones multi-tenant [Opensouthcode 2019]
 
Azure messaging! La comparación definitiva
Azure messaging! La comparación definitivaAzure messaging! La comparación definitiva
Azure messaging! La comparación definitiva
 
Event Grid, ¿colega que pasa en mi nube? 2.0
Event Grid, ¿colega que pasa en mi nube? 2.0Event Grid, ¿colega que pasa en mi nube? 2.0
Event Grid, ¿colega que pasa en mi nube? 2.0
 
Creando aplicaciones multi-tenant
Creando aplicaciones multi-tenantCreando aplicaciones multi-tenant
Creando aplicaciones multi-tenant
 
Reactjs, el ciclo de la vida
Reactjs, el ciclo de la vidaReactjs, el ciclo de la vida
Reactjs, el ciclo de la vida
 
Keynote .Net conf Barcelona 2018
Keynote .Net conf Barcelona 2018Keynote .Net conf Barcelona 2018
Keynote .Net conf Barcelona 2018
 
Azure Logic Apps
Azure Logic AppsAzure Logic Apps
Azure Logic Apps
 
Event Grid, ¿colega que pasa en mi nube?
Event Grid, ¿colega que pasa en mi nube? Event Grid, ¿colega que pasa en mi nube?
Event Grid, ¿colega que pasa en mi nube?
 
Event Grid, colega que pasa en mi nube?
Event Grid, colega que pasa en mi nube?Event Grid, colega que pasa en mi nube?
Event Grid, colega que pasa en mi nube?
 
¿Cómo mezclar agua con aceite? NodeJS + Azure
¿Cómo mezclar agua con aceite? NodeJS + Azure ¿Cómo mezclar agua con aceite? NodeJS + Azure
¿Cómo mezclar agua con aceite? NodeJS + Azure
 
¿Cómo mezclar agua con aceite? NodeJS + Azure
¿Cómo mezclar agua con aceite? NodeJS + Azure¿Cómo mezclar agua con aceite? NodeJS + Azure
¿Cómo mezclar agua con aceite? NodeJS + Azure
 
Gapand KeyNote
Gapand KeyNoteGapand KeyNote
Gapand KeyNote
 
Web app, el arte del botón derecho -> Publicar
Web app, el arte del botón derecho -> PublicarWeb app, el arte del botón derecho -> Publicar
Web app, el arte del botón derecho -> Publicar
 
The big ball of mud!
The big ball of mud!The big ball of mud!
The big ball of mud!
 
PowerBI (Azure Deep Dive)
PowerBI (Azure Deep Dive)PowerBI (Azure Deep Dive)
PowerBI (Azure Deep Dive)
 
Azure web app. Botón derecho --> publicar
Azure web app. Botón derecho --> publicarAzure web app. Botón derecho --> publicar
Azure web app. Botón derecho --> publicar
 
¿Quién, cuándo, dónde y por qué?
¿Quién, cuándo, dónde y por qué?¿Quién, cuándo, dónde y por qué?
¿Quién, cuándo, dónde y por qué?
 

¿Qué hay de nuevo viejo? Novedades c# 6

Notas do Editor

  1. C# es lenguaje de programación orientado a objetos desarrollado y estandarizado por Microsoft como parte de su plataforma .NET, que después fue aprobado como un estándar por la ECMA y la ISO. Es uno de los lenguajes diseñados para la CLI (infraestructura de lenguaje común). Su sintaxis básica viene de C/C++ y utiliza el modelo de objetos de .NET, parecido al de Java, pero con mejoras derivadas de otros lenguajes. Aunque forma parte de .Net, ésta es una API y C# es un lenguaje independiente diseñado para desarrollar aplicaciones bajo esta plataforma aunque ya existe un compilador en Mono para generar aplicaciones en otras plataformas.
  2. C#1: Microsoft publicó la primera versión de C# con Visual Studio 2002. En esta versión se introdujo el uso de código administrado. C#2: Visual Studio 2005. C#3: Visual Studio 2008 llegó con la versión 3.0 de C#, y tenía un montón de características nuevas. C#4: fue lanzado con Visual Studio 2010 y Framework 4.
  3. Explicar que hay cosas que funcionan con un framework inferior. Si trabajas con VS 2015 http://stackoverflow.com/questions/28921701/does-c-sharp-6-0-work-for-net-4-0
  4. Por raro que parezca, esta funcionalidad ya estaba en las versiones anteriores de vb .net pero no en c#
  5. Antes, por cuestiones especificas del compilador, no era posible. Se han realizado cambios en el compilador para que sea posible realizar este tipo de acciones sin tener que picar un código complejo. Finally: enviar un email.
  6. En versiones previas para obtener el nombre de una propiedad teníamos que hacerlo mediante reflection. Ahora es tan simple como hacerlo con esta función que nos expone . Saca el nombre de la variable y lo devuelve como un string
  7. En nuestras clases tenemos propiedades y muchas veces hay que inicializarlas. Hasta ahora lo hacíamos en el constructor, pero con C#6, se puede hacer en la misma declaración asignándole un valor. Podemos hacer exactamente lo mismo aunque nuestra propiedad sea solo de lectura, es decir, solo con get y sin set. Por debajo, esto se declara implícitamente como readonly y se puede inicializar en el constructor. Además se pueden inicializar propiedades con una expresión.
  8. Antes para acceder a un miembro de una clase estática teníamos que poner el nombre de la clase punto y el miembro al que queríamos acceder. Ahora esto ya no es necesario podemos acceder directamente al método que queramos. Para conseguir esto es tan simple como declarar el using con la única particularidad de que hay que utilizar el static. Es válido tanto para clases que ¿internas? como para clases propias.
  9. ¿Cuantas veces hemos visto un NullReferenceException por no controlar correctamente un posible valor nulo? En esta nueva versión tenemos una forma simple y limpia de hacer esta validación. Si no comprobásemos si la entidad es nulo, al intentar acceder a la propiedad nos petaria. La nueva manera de comprobar los nulos hace que sea más simple y ágil hacer este tipo de validaciones. Hay que tener en cuenta que el operador interrogación va a devolver siempre un tipo nullable, es decir, que si el tipo de devolución es por ejemplo un entero deberemos expresar el tipo cómo nulable para que pueda aceptar el valor después de la validación con el operador o bien un null.
  10. Esta característica nos permite inicializar con valores por defecto nuestros diccionarios con mucho menos código que antes. C# 6 tiene esta nueva sintaxis para inicializar objetos que permite establecer los valores de las claves a través de un indexador que tiene el nuevo objeto. Estos iniciadores no son sólo para los diccionarios, se pueden utilizar para cualquier objeto que soporta un controlador paso a paso, por ejemplo, List<T>.
  11. Ahora solo hay que añadir el $ delante de la cadena y poner entre llaves el nombre de la propiedad que queremos que aparezca.
  12. Avisos: Aunque tengamos un código que compila, roslyn es capaz de avisarnos de errores en tiempo de ejecución. Nota: Si nos sobrara mucho tiempo, enseñar ejemplo en VS.
  13. -Redefinir: escrito los compiladores en sus propios lenguajes manejados. Permitiendo crear una API para cada una de las partes. -Open source: Transparencia, eremos una estructura de código mas moderna, con test unitarios, patrones, inyección de dependencias. Y muchos trucos de rendimiento para que el compilador el IDE vaya mas fluido.