La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Le novità di C# 6 NUOVE FUNZIONALITA’ E CARATTERISTICHE DEL LINGUAGGIO.

Presentazioni simili


Presentazione sul tema: "Le novità di C# 6 NUOVE FUNZIONALITA’ E CARATTERISTICHE DEL LINGUAGGIO."— Transcript della presentazione:

1 Le novità di C# 6 NUOVE FUNZIONALITA’ E CARATTERISTICHE DEL LINGUAGGIO

2 Mi presento Ing. Antonio Pelleriti Mail: Web: Ultimo libro: Programmare con C# 5, LSWR 2014

3 Un grazie a

4 Agenda  C# ieri e oggi  Le novità di C# 6  Demo

5 C#  Prima versione di C#

6 C#  Generics  Tipi parziali  Metodi anonimi  Iteratori  get/set accessibilità separata  Classi static  Altro ancora…

7 C#  Variabili di tipo implicito  Inizializzatori di oggetti e di collezioni  Auto-properties  Tipi anonimi  Metodi di estensione  Query expressions  Espressioni Lambda  Metodi parziali  E altro ancora…

8 C#  Dynamic binding  Argomenti denominati e opzionali  Generics co/controvarianza  E altro ancora…

9 C#  Async  Caller info attributes  Altro…

10 Le novità di C# 6 Cosa vedremo in C# 6  Auto-Property Initializers  Using per membri statici  Exception filter  Index Inizializers (dizionari, ecc.)  Null propagation  Await in catch/finally  Expression-bodied members  Nameof  String interpolation

11 Forse in C# 6 E cosa forse vedremo in C# 6  Primary constructor  Indexed member access  Dichiarazione inline di variabili  Binary literals e separatori di cifre  Inizializzatori di eventi  params IEnumerable

12 Auto property initializers Inizializzazione di proprietà automatiche public class Persona { public string Nome{ get; set; } public string Cognome{ get; set; } } = "Antonio"; = "Pelleriti"

13 Getter only auto property initializers Anche in sola lettura public class Persona { public string Nome{ get; } = "Antonio"; } public class Persona { public string Nome{ get; } //Errore in C# 5 public Persona(string nome) { Nome=nome; //Errore in C# 5 } NB in VS 2014 CTP le proprietà get only possono essere inizializzate solo con gli inizializzatori non nel costruttore

14 Using static members Using di classe, permette di usarne i membri statici using System.Console; using System.Math; class Program { static void Main() { WriteLine(Sqrt(3*3 + 4*4)); } }

15 Exception Filter Catturare un’eccezione se si verifica una condizione catch(Exception ex) if(cond1) { } catch(Exception ex1) if(cond2) { } private static bool Log(Exception e) { /* log it */ ; return false; } … try { … } catch (Exception e) if (Log(e)) {}

16 Index initializer 1/1 Nuova sintassi per inizializzare dizionari o oggetti con indicizzatori  var numbers = new Dictionary { { 7, "seven" }, { 9, "nine" }, { 13, "thirteen" }, };  var numbers2 = new Dictionary { [7] = "seven", [9] = "nine", [13] = "thirteen" };

17 Index initializer 1/2 Classe con indicizzatore public class Person { public string this[int index] { get { return numbers[index]; } set { numbers[index] = value; } Inizializzazione con indicizzatore var persona = new Person("antonio") { [0] = " ", [3] = " ", };

18 Null conditional Null Propagation operator ? string str=…; int? len; if(str!=null) len=str.Length; int? len= str?.Length; //null se str==null char? first=str?[0];

19 await in catch/finally In genere errore di compilazione Cannot await in the body of a catch clause try{} catch { await MetodoAsincrono(); //errore in C# 5 }

20 Expression bodies members Utilizzo di espressioni lambda per implementare il corpo di proprietà  public string Completo => String.Format("{0} {1}", Nome, Cognome); metodo  public void Print(string title) => Console.WriteLine(title+" "+Nome + " " + Cognome); operatore  public static implicit operator string (Person p) => p.Nome + " " + p.Cognome;

21 nameof Operatore nameof int x = 0; string name=nameof(x); Console.WriteLine("{0}={1}", name, x); name=(nameof(Person.Address.ZipCode)); // returns "ZipCode"

22 DEMO Visual Studio ’14’ CTP 4 prebuilt Azure VM images with VS "14" CTP 4 already installed. Alcune features funzionanti in ctp solo con experimental In csproj End User Preview on top of Visual Studio (note: this VS 2013 preview is no longer updated)

23 Link utili.NET Compiler Platform ("Roslyn") C# 6 Language Features status https://roslyn.codeplex.com/wikipage?title=Language%20Feat ure%20Status https://roslyn.codeplex.com/wikipage?title=Language%20Feat ure%20Status VS 2015 preview downloads-vs downloads-vs

24 promo Programmare con C# 5 guida completa

25 “ ” Domande


Scaricare ppt "Le novità di C# 6 NUOVE FUNZIONALITA’ E CARATTERISTICHE DEL LINGUAGGIO."

Presentazioni simili


Annunci Google