C# 6download.microsoft.com/download/C/5/7/C57FB17E-620C-46AD-BC3… · •String interpolation...

43

Transcript of C# 6download.microsoft.com/download/C/5/7/C57FB17E-620C-46AD-BC3… · •String interpolation...

Page 1: C# 6download.microsoft.com/download/C/5/7/C57FB17E-620C-46AD-BC3… · •String interpolation •Automatic Property Initializers •Indexed Member Initialization •Static Using
Page 2: C# 6download.microsoft.com/download/C/5/7/C57FB17E-620C-46AD-BC3… · •String interpolation •Automatic Property Initializers •Indexed Member Initialization •Static Using

C# 6Door Alex en Chris van Beek

Page 3: C# 6download.microsoft.com/download/C/5/7/C57FB17E-620C-46AD-BC3… · •String interpolation •Automatic Property Initializers •Indexed Member Initialization •Static Using

Over ons

• Enthousiastelingen• Software Architecten bij Luminis Arnhem B.V.• Gespecialiseerd in Microsoft technologie: .Net, Azure en

Windows• Twitter: @Beekje en @cbeek• Blog: http://arnhem.luminis.eu/alex-van-beek/ en

http://arnhem.luminis.eu/chris-van-beek

Page 4: C# 6download.microsoft.com/download/C/5/7/C57FB17E-620C-46AD-BC3… · •String interpolation •Automatic Property Initializers •Indexed Member Initialization •Static Using

Inleiding

Elke C# release heeft een thema:

• C# 2: Generics / Collecties

• C# 3: LINQ

• C# 4: Interop

• C# 5: Asynchroniteit

• C# 6: Verminderen “boiler plate” code

Page 5: C# 6download.microsoft.com/download/C/5/7/C57FB17E-620C-46AD-BC3… · •String interpolation •Automatic Property Initializers •Indexed Member Initialization •Static Using

Features

• String interpolation

• Automatic Property Initializers

• Indexed Member Initialization

• Static Using Statements

• NULL-Conditional operator

• NameOf expressies

• Exception filters

• Await in Catch / Finally blokken

• Expression-bodied members

Page 6: C# 6download.microsoft.com/download/C/5/7/C57FB17E-620C-46AD-BC3… · •String interpolation •Automatic Property Initializers •Indexed Member Initialization •Static Using

Overzicht

• String interpolation

• Automatic Property Initializers

• Indexed Member Initialization

• Static Using Statements

• NULL-Conditional operator

• NameOf expressies

• Exception filters

• Await in Catch / Finally blokken

• Expression-bodied members

Page 7: C# 6download.microsoft.com/download/C/5/7/C57FB17E-620C-46AD-BC3… · •String interpolation •Automatic Property Initializers •Indexed Member Initialization •Static Using

String Interpolation

Vervanging voor o.a. String.format

Console.WriteLine($"{p.X},{p.Y}");

Console.WriteLine(String.Format("{0},{1}", p.X,p.Y));

Page 8: C# 6download.microsoft.com/download/C/5/7/C57FB17E-620C-46AD-BC3… · •String interpolation •Automatic Property Initializers •Indexed Member Initialization •Static Using

Demo: String interpolation

Page 9: C# 6download.microsoft.com/download/C/5/7/C57FB17E-620C-46AD-BC3… · •String interpolation •Automatic Property Initializers •Indexed Member Initialization •Static Using

String Interpolation weetjes

• Kan gebruik maken van de IFormattable interface

• “@” is in combinatie met “$” te gebruiken

Page 10: C# 6download.microsoft.com/download/C/5/7/C57FB17E-620C-46AD-BC3… · •String interpolation •Automatic Property Initializers •Indexed Member Initialization •Static Using

Overzicht

• String interpolation

• Automatic Property Initializers

• Indexed Member Initialization

• Static Using Statements

• NULL-Conditional operator

• NameOf expressies

• Exception filters

• Await in Catch / Finally blokken

• Expression-bodied members

Page 11: C# 6download.microsoft.com/download/C/5/7/C57FB17E-620C-46AD-BC3… · •String interpolation •Automatic Property Initializers •Indexed Member Initialization •Static Using

Automatic Property Initializers

Handige manier om properties te initialiseren.

• Werkt ook voor read-only properties

public string Name { get; private set; } = "Unknown";

public Person(){

Name = "Unknown";}

Page 12: C# 6download.microsoft.com/download/C/5/7/C57FB17E-620C-46AD-BC3… · •String interpolation •Automatic Property Initializers •Indexed Member Initialization •Static Using

Demo: Automatic Property

Initializers

Page 13: C# 6download.microsoft.com/download/C/5/7/C57FB17E-620C-46AD-BC3… · •String interpolation •Automatic Property Initializers •Indexed Member Initialization •Static Using

Automatic Property Initializers

weetjes

• Je hebt geen setter meer nodig voor het toekennen

aan read-only properties vanuit constructoren

Page 14: C# 6download.microsoft.com/download/C/5/7/C57FB17E-620C-46AD-BC3… · •String interpolation •Automatic Property Initializers •Indexed Member Initialization •Static Using

Overzicht

• String interpolation

• Automatic Property Initializers

• Indexed Member Initialization

• Static Using Statements

• NULL-Conditional operator

• NameOf expressies

• Exception filters

• Await in Catch / Finally blokken

• Expression-bodied members

Page 15: C# 6download.microsoft.com/download/C/5/7/C57FB17E-620C-46AD-BC3… · •String interpolation •Automatic Property Initializers •Indexed Member Initialization •Static Using

Indexed Member Initialization

Net een iets handigere manier om indexers te

initializeren.

Dictionary<string, string> translations = new Dictionary<string, string> {

["Koe"] = "Cow" ,["Kat"] = "Cat",["Hond"]= "Dog"

};

Dictionary<string, string> translations = new Dictionary<string, string>();

translations["Koe"] = "Cow";translations["Kat"] = "Cat";translations["Hond"] = "Dog";

Page 16: C# 6download.microsoft.com/download/C/5/7/C57FB17E-620C-46AD-BC3… · •String interpolation •Automatic Property Initializers •Indexed Member Initialization •Static Using

Demo: Indexed Member

Initialization

Page 17: C# 6download.microsoft.com/download/C/5/7/C57FB17E-620C-46AD-BC3… · •String interpolation •Automatic Property Initializers •Indexed Member Initialization •Static Using

Indexed Member Initialization

weetjes• Werkt ook voor types zonder IEnumerable en zonder

Add methode

Page 18: C# 6download.microsoft.com/download/C/5/7/C57FB17E-620C-46AD-BC3… · •String interpolation •Automatic Property Initializers •Indexed Member Initialization •Static Using

Overzicht

• String interpolation

• Automatic Property Initializers

• Indexed Member Initialization

• Static Using Statements

• NULL-Conditional operator

• NameOf expressies

• Exception filters

• Await in Catch / Finally blokken

• Expression-bodied members

Page 19: C# 6download.microsoft.com/download/C/5/7/C57FB17E-620C-46AD-BC3… · •String interpolation •Automatic Property Initializers •Indexed Member Initialization •Static Using

Static using statements

Vermindert typwerk bij het veelvuldig aanroepen van

static methoden

WriteLine("Hello, my name is Alex van Beek... Who are you?: ");

System.Console.WriteLine("Hello, my name is Alex van Beek... Who are you?: ");

Page 20: C# 6download.microsoft.com/download/C/5/7/C57FB17E-620C-46AD-BC3… · •String interpolation •Automatic Property Initializers •Indexed Member Initialization •Static Using

Demo: Static Using

Statements

Page 21: C# 6download.microsoft.com/download/C/5/7/C57FB17E-620C-46AD-BC3… · •String interpolation •Automatic Property Initializers •Indexed Member Initialization •Static Using

Static using weetjes

• Kan gebruikt worden om extensie methoden

preciezer te scopen dan de hele namespace

Page 22: C# 6download.microsoft.com/download/C/5/7/C57FB17E-620C-46AD-BC3… · •String interpolation •Automatic Property Initializers •Indexed Member Initialization •Static Using

Overzicht

• String interpolation

• Automatic Property Initializers

• Indexed Member Initialization

• Static Using Statements

• NULL-Conditional operator

• NameOf expressies

• Exception filters

• Await in Catch / Finally blokken

• Expression-bodied members

Page 23: C# 6download.microsoft.com/download/C/5/7/C57FB17E-620C-46AD-BC3… · •String interpolation •Automatic Property Initializers •Indexed Member Initialization •Static Using

NULL-Conditional operator

Vermindert het typwerk bij geneste NULL controles

value = value?.Substring(0,3);

if(value != null){

value = value.substring(0, 3);}

Page 24: C# 6download.microsoft.com/download/C/5/7/C57FB17E-620C-46AD-BC3… · •String interpolation •Automatic Property Initializers •Indexed Member Initialization •Static Using

Demo: NULL Conditional

Operator

Page 25: C# 6download.microsoft.com/download/C/5/7/C57FB17E-620C-46AD-BC3… · •String interpolation •Automatic Property Initializers •Indexed Member Initialization •Static Using

NULL-Conditional Operator weetjes

• Zet valuetypes om naar nullable types

• Ook te gebruiken bij indexers

Page 26: C# 6download.microsoft.com/download/C/5/7/C57FB17E-620C-46AD-BC3… · •String interpolation •Automatic Property Initializers •Indexed Member Initialization •Static Using

Overzicht

• String interpolation

• Automatic Property Initializers

• Indexed Member Initialization

• Static Using Statements

• NULL-Conditional operator

• NameOf expressies

• Exception filters

• Await in Catch / Finally blokken

• Expression-bodied members

Page 27: C# 6download.microsoft.com/download/C/5/7/C57FB17E-620C-46AD-BC3… · •String interpolation •Automatic Property Initializers •Indexed Member Initialization •Static Using

NameOf expressies

Vermindert kans op fouten bij het verwijzen naar

members

Guard.GuardNull(argument, nameof(argument));

Guard.GuardNull(argument, "argument");

Page 28: C# 6download.microsoft.com/download/C/5/7/C57FB17E-620C-46AD-BC3… · •String interpolation •Automatic Property Initializers •Indexed Member Initialization •Static Using

Demo: nameof operator

Page 29: C# 6download.microsoft.com/download/C/5/7/C57FB17E-620C-46AD-BC3… · •String interpolation •Automatic Property Initializers •Indexed Member Initialization •Static Using

nameof weetjes

• Erg handig bij WPF en INotifyPropertyChanged

Page 30: C# 6download.microsoft.com/download/C/5/7/C57FB17E-620C-46AD-BC3… · •String interpolation •Automatic Property Initializers •Indexed Member Initialization •Static Using

Overzicht

• String interpolation

• Automatic Property Initializers

• Indexed Member Initialization

• Static Using Statements

• NULL-Conditional operator

• NameOf expressies

• Exception filters

• Await in Catch / Finally blokken

• Expression-bodied members

Page 31: C# 6download.microsoft.com/download/C/5/7/C57FB17E-620C-46AD-BC3… · •String interpolation •Automatic Property Initializers •Indexed Member Initialization •Static Using

Exception filters

Geeft ons de mogelijkheid om fijnmaziger aan te geven

welke excepties wij willen afvangen

try{

throw new Exception("E1");}catch (Exception ex) when (ex.Message == "E1"){

Console.WriteLine("caught E1");}catch (Exception ex) when (ex.Message == "E2"){

Console.WriteLine("caught E2");}

Page 32: C# 6download.microsoft.com/download/C/5/7/C57FB17E-620C-46AD-BC3… · •String interpolation •Automatic Property Initializers •Indexed Member Initialization •Static Using

Demo: Exception filters

Page 33: C# 6download.microsoft.com/download/C/5/7/C57FB17E-620C-46AD-BC3… · •String interpolation •Automatic Property Initializers •Indexed Member Initialization •Static Using

Exception filters weetjes

• Was al aanwezig in IL

• Is anders dan een conditie in een catch blok en

daarna een rethrow.

Page 34: C# 6download.microsoft.com/download/C/5/7/C57FB17E-620C-46AD-BC3… · •String interpolation •Automatic Property Initializers •Indexed Member Initialization •Static Using

Overzicht

• String interpolation

• Automatic Property Initializers

• Indexed Member Initialization

• Static Using Statements

• NULL-Conditional operator

• NameOf expressies

• Exception filters

• Await in Catch / Finally blokken

• Expression-bodied members

Page 35: C# 6download.microsoft.com/download/C/5/7/C57FB17E-620C-46AD-BC3… · •String interpolation •Automatic Property Initializers •Indexed Member Initialization •Static Using

Await en catch / finally

Werkt eindelijk zoals verwacht

try{

Error.Cause();}catch{

await Log.InfoAsync("Error logged");}

Page 36: C# 6download.microsoft.com/download/C/5/7/C57FB17E-620C-46AD-BC3… · •String interpolation •Automatic Property Initializers •Indexed Member Initialization •Static Using

Overzicht

• String interpolation

• Automatic Property Initializers

• Indexed Member Initialization

• Static Using Statements

• NULL-Conditional operator

• NameOf expressies

• Exception filters

• Await in Catch / Finally blokken

• Expression-bodied members

Page 37: C# 6download.microsoft.com/download/C/5/7/C57FB17E-620C-46AD-BC3… · •String interpolation •Automatic Property Initializers •Indexed Member Initialization •Static Using

Expression-bodied members

“Syntactic sugar” om eenregelige methodes iets korter

op te schrijven

public static void WriteSomething(string message) => Console.WriteLine(message);

public static void WriteSomething(string message){ Console.WriteLine(message); }

Page 38: C# 6download.microsoft.com/download/C/5/7/C57FB17E-620C-46AD-BC3… · •String interpolation •Automatic Property Initializers •Indexed Member Initialization •Static Using

Expression-bodied members

weetjes• Met name handig om berekende read-only properties

te maken

Page 39: C# 6download.microsoft.com/download/C/5/7/C57FB17E-620C-46AD-BC3… · •String interpolation •Automatic Property Initializers •Indexed Member Initialization •Static Using

Overzicht

• String interpolation

• Automatic Property Initializers

• Indexed Member Initialization

• Static Using Statements

• NULL-Conditional operator

• NameOf expressies

• Exception filters

• Await in Catch / Finally blokken

• Expression-bodied members

Page 40: C# 6download.microsoft.com/download/C/5/7/C57FB17E-620C-46AD-BC3… · •String interpolation •Automatic Property Initializers •Indexed Member Initialization •Static Using

Features die zijn vervallen

of nog niet af zijn• Vervallen:

• Primary Constructors

• Declaratie expressies

• Nog niet af maar wel in C#6 (waarschijnlijk):

• Binaire literals: int i = 0b01110011;

• Underscore als groepskarakter: long l =

1_000_000_000;

Page 41: C# 6download.microsoft.com/download/C/5/7/C57FB17E-620C-46AD-BC3… · •String interpolation •Automatic Property Initializers •Indexed Member Initialization •Static Using

Vragen?

Page 42: C# 6download.microsoft.com/download/C/5/7/C57FB17E-620C-46AD-BC3… · •String interpolation •Automatic Property Initializers •Indexed Member Initialization •Static Using

Your feedback is important!

Scan the QR Code and let us know via the TechDays App.

Laat ons weten wat u van de sessie vindt via de TechDays App!

Scan de QR Code.

Bent u al lid van de Microsoft Virtual Academy?! Op MVA kunt u altijd iets nieuws leren over de laatste technologie van Microsoft. Meld u vandaag aan op de MVA Stand. MVA biedt 7/24 gratis online training on-demand voor IT-Professionals en Ontwikkelaars.

Page 43: C# 6download.microsoft.com/download/C/5/7/C57FB17E-620C-46AD-BC3… · •String interpolation •Automatic Property Initializers •Indexed Member Initialization •Static Using