1. Assentant les bases{...o com hem arribat fins aquí.} Lluís Franco Speaker AndorraDotNet Microsoft
2. Agenda Introducció: AndorraDotNet Assentant les bases: La evolució del Framework (FWK 1.1 to 3.5) Conceptes OOP (herència, interfases, col·leccions, etc.) Exemples evolució llenguatge (FWK 1.1 to 3.5) Exemples LINQ to SQL Exemples LINQ to EF... si arribem, si no un altre dia . Dani: Pots fer 5 cèntims del DevCamp? Propers events (aporteu idees) Sorteig de goodies (i llicències!) Sopar (qui s’apunti :-P)
9. Novetats en els llenguatges Noves característiques en C# i VB
10. Novetats en els llenguatges Novetats en elsllenguatges: Inferencia de tipos locales (VB / C#) Inicializadores de objetos (VB / C#) Inicializadores de colección (C#) Tipos anónimos (VB / C#) Palabras clave de consultas (VB / C#) Métodos de extensión (VB / C#) Expresiones lambda (C#) Tipos nullables (per fi en VB!) Operador ternario (per fi en VB!)
11. Inferencia de tipos locales (VB / C#) Dim City = “Springfield” Dim Size = 36 Dim PI = 3.1415927 Dim date = DateTime.Today Dim someNumbers() = New Integer() {4, 18, 11, 9, 8, 0, 5} DimpList = Process.GetProcesses() var i = 5; varisnumeric = false; var s = "Hello"; var a = new[] { 0, 1, 2 }; varlist = new List<int>(); var person = new { Name = "Terry", Age = 34 };
12. Inicializadores de objetos (VB / C#) No és necessari un constructor per la clase (si no es serialitzable) Public Class Public Name As String Public City As String End Class Dim cust As New Customer() cust2.Name = "Toni Poe" cust2.City = "Louisville“ Ara equival a: Dim namedCust = New Customer With {.Name = "Terry Adams"} Tot i això, és recomamable (legibilitat del codi)
13. Inicializadores de colección (C#) privateclassCat { publicintAge { get; set; } publicstringName { get; set; } } staticvoidcreateCat() { Catcat = new Cat { Age = 10, Name = "Sylvester" }; } List<Cat> cats = new List<Cat> { new Cat(){ Name="Sylvester", Age=8 }, new Cat(){ Name="Whiskers", Age=2}, new Cat() { Name="Sasha", Age=14} };
14. Tipos anónimos (VB / C#) Permeten crear objectes sense escriure cap definició de clase per el tipus de dades. El compilador genera automáticament una clase, Dim product = New With {.Name = "paperclips", .Price = 1.29} Dim prod3 = New With {Key .Name = "paperclips", Key .Price = 1.29} Dim prod4 = New With {Key .Name = "paperclips", Key .Price = 1.29} Console.WriteLine(prod3.Equals(prod4)) //returns true if Keys var v = new { Amount = 108, Message = "Hello" }; varproductQuery = fromprod in products select new { prod.Color, prod.Price };
15. Palabras clave de consultas (VB / C#) LINQ al poder! Dim dc As New ContactsDataContext() Dim contacts = _ From c Indc.Contacts _ Wherec.FirstName.Contains("a") _ Order By c.ContactID _ Select c string[] words = { "aPPLE", "BlUeBeRrY", "cHeRry" }; varupperLowerWords = from w in words select new { Upper = w.ToUpper(), Lower = w.ToLower() }; varstudentQuery = from student in students group student bystudent.Last;
16. Métodos de extensión (VB / C#) Alguns dels més puristes de la OO no ho veuen amb bons ulls. Jo si ImportsSystem.Runtime.CompilerServices Module StringExtensions <Extension()> _ Public Sub Print(ByValaString As String) Console.WriteLine(aString) End Sub End Module Imports StringExtensions Dim example As String = "Hello” example.Print()
17. Expresiones lambda (C#) Representa una funció anònima que pot contenir expressions i instruccions i es pot utilitzar per crear delegats o tipus d’arbres d’expressions. Totes les expressions lambda utilitzen l’operador lambda = >, que es pot llegir com “va a”. delegateint del(int i); del myDelegate = x => x * x; int j = myDelegate(5); //j = 25 customers.Where(c => c.City == "London"); int[] nums = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 }; var parells = nums.Where(n => n % 2 != 1); foreach (var n in parells) { MessageBox.Show(n.ToString()); }
18. Per fi a VB! Funcionalitats que fins ara només eren a C# (int?, ?:) Tipus nullables Dim k As Integer? = Nothing If Not k.HasValue Then k = 9 End If Operador ternari de veritat Dim r = If(5 < 10, "menor", "major")
23. Microsoft DevCamp ¿ Qué es el {dev_camp} ? Es un evento de dos días (fin de semana de 8 y 9 de Noviembre) donde haremos de todo un poco. Habrá sesiones técnicas y habrá momentos de ocio… Resum del Dani: http://andorradotnet.com/blogs/cdani/archive/2008/11/09/dev-camp-2008.aspx El Dani es famós : http://www.navarradotnet.com/post/navarradotnet-en-el-7bdev_camp7d.aspx