Das mit C# 5 eingeführte Keyword await war in catch und finally Blöcken nicht möglich. Es mussten also Workarounds implementiert werden. Mit C#6 ändert sich dies, wie das nachfolgende Beispiel zeigt. static async void ProcessDataAsync() { try { DoSomethingErroneous(); } catch (Exception e) { await ReportErrorAsync(e); } } Viel Spaß :) Viele weitere Neuerungen finden …
Schlagwort-Archive: C# 6
C# 6: Index initializers
Objekte und Collections können ja bereits recht einfach mit initialen Werten versehen werden. Bei Objekten mit Indexer hingegen fehlt ein eleganter Weg. Dieser ist nun mit C# 6 verfügbar.
C# 6: Using static
Eine weitere Neuerung in C# 6 ist using static. Dies ermöglicht den Import statischer Klassen und die Verwendung der verfügbaren Member ohne voll qualifizierter Angabe. Hier ein Beispiel: using static System.Math; class Program { static void Main(string[] args) { System.WriteLine(Cos(3)); } } Auch der Import von enums ist möglich: using static System.Environment; using static System.Environment.SpecialFolder; …
C# 6: Neuerungen im Überblick – Serie
Lerne durch diese Serie die wichtigsten neuen Funktionen und Möglichkeiten von C# 6 kennen. Beispiele inklusive.
C# 6: Expression-bodied Members
In C# 6 können Expressions für Eigenschaften und Methoden/Funktionen verwendet werden. Dieser Beitrag beschreibt die neuen Möglichkeiten und zeigt ein Beispiel.
C# 6: Exception Filters
Exception Filters sind neu in C# 6. Dieser Beitrag erkärt wie sie funktionieren.
C# 6: String Interpolation
String.Format ist eine der ersten Funktionen, die beim Erlernen von einer Sprache unter .NET zum Einsatz kommt. Damit kann man sich ja quasi ein Template mit Platzhaltern definieren. In diese Platzhalter werden dann Werte eingefügt und – falls angegeben – entsprechend formatiert. Das ist bei einem Wert oder zweien nicht so schlimm, kann aber bei …
C# 6: nameof Expression
nameof ist eine richtig hilfreiche Sache um all diese magischen Strings aus dem Sourcecode raus zu bekommen. Gerade zu WPF-Zeiten waren entsprechende Workarounds besonders in Zusammenhang mit INotifyPropertyChanged etc. gefragt. Hier ein solches Beispiel: public class Person : INotifyPropertyChanged { private string firstName; public string FirstName { get { return firstName; } set { firstName …
C# 6: Auto-Property Initializers
In C# 3 wurden die Auto-Implemented Properties eingeführt. Auf Deutsch besitzen sie den wohlklingenden Namen Automatisch implementierte Eigenschaften. Sie werden so definiert: public DateTime CreateDate { get; set; } Dabei erstellt der Compiler im Hintergrund ein “unsichtbares” Attribut, welches einen etwaigen Wert enthält. Nun ist es aber unpraktisch, einer derartigen Eigenschaft einen Default-Wert zu verpassen: …
C# 6: Null-conditional Operator
Wer kennt es nicht, das ständige Prüfen auf null bevor auf Eigenschaften zugegriffen oder Methoden ausgeführt werden. Damit wollen wir eine NullReferenceException möglichst vermeiden. Diese Prüfungen sehen etwa wie folgt aus: Person firstPerson = null; var newAddress = new Address(); if (firstPerson != null) { firstPerson.Relocate(newAddress); } Weit schlimmer sieht das bei komplexeren Objektbäumen/Datenstrukturen aus. …