What's New for Visual C#

 

Veröffentlicht: Juli 2016

System_CAPS_ICON_note.jpg Hinweis

Die neueste Dokumentation über C# finden Sie im Leitfaden für C# auf docs.microsoft.com.

Auf dieser Seite sind die Namen der wichtigsten Features für jede Version von C# mit Beschreibungen der neuen und verbesserten Features in der neuesten Version der Sprache aufgelistet.

C# 1, Visual Studio .NET 2002
Erste Version

C# 1.1, Visual Studio .NET 2003
#line-Pragma und XML-Dokumentationskommentare

C# 2, Visual Studio .NET 2005
Anonyme Methoden, Generika, auf NULL festlegbare Typen, Iteratoren/Yield, static-Klassen, Ko-/Kontravarianz für Delegaten

C# 3, Visual Studio .NET 2008
Objekt- und Auflistungsinitialisierer, Lambda-Ausdrücke, Erweiterungsmethoden, anonyme Typen, automatische Eigenschaften, Language Integrated Query (LINQ), anonyme Typen, lokaler var-Typrückschluss, LINQ

C# 4, Visual Studio .NET 2010
Dynamic, benannte Argumente, optionale Parameter, generische Ko-/Kontravarianz

C# 5, Visual Studio .NET 2012
Async/await, Aufrufer-Informationsattribute

Visual Studio .NET 2013
Programmfehlerbehebungen, Leistungsverbesserungen und Technologievorschau von .NET Compiler Platform ("Roslyn")

C# 6, Visual Studio .NET 2015
Aktuelle Version, siehe unten

nameof
Sie können den nicht qualifizierten Zeichenfolgennamen eines Typs oder Members zur Verwendung in einer Fehlermeldung ohne Hartcodierung einer Zeichenfolge abrufen. Dadurch bleibt der Code bei der Umgestaltung korrekt. Dieses Feature eignet sich auch zum Einbinden von MVC-Links (Model-View-Controller) und das Auslösen von Ereignissen durch geänderte Eigenschaften.

Zeichenfolgeninterpolierung
Sie können Ausdrücke für die Zeichenfolgeninterpolierung zum Erstellen von Zeichenfolgen verwenden. Ein Ausdruck für eine interpolierte Zeichenfolge sieht wie eine Vorlagenzeichenfolge aus, die Ausdrücke enthält. C# erstellt eine Zeichenfolge, indem die Ausdrücke durch die ToString-Darstellungen der Ergebnisse dieser Ausdrücke ersetzt werden. Eine interpolierte Zeichenfolge ist in Bezug auf die Argumente leichter zu verstehen als eine Kombinierte Formatierung.

Memberzugriff und Indizierung mit NULL-Bedingung
Sie können eine Prüfung auf null auf sehr einfache syntaktische Weise vornehmen, bevor Sie eine Operation für den Memberzugriff (?.) oder die Indizierung (?[]) ausführen. Mithilfe dieser Operatoren müssen Sie für die Prüfung auf null weniger Code schreiben, insbesondere beim tieferen Eindringen in Datenstrukturen. Wenn der linke Operand oder Objektverweis null ist, geben die Operationen null zurück.

Indexinitialisierer
Sie haben nun die Möglichkeit, bestimmte Elemente einer Auflistung, die eine Indizierung unterstützt, zu initialisieren, z. B. ein Wörterbuch initialisieren.

Auflistungsinitialisierer und Add-Erweiterungsmethoden
Sie können jetzt Initialisierer für Auflistungen verwenden, wenn die Auflistung eine Add-Erweiterungsmethode aufweist. Zuvor musste die Add-Methode eine Instanzmethode sein.

Überladungsauflösung
Der Compiler verfügt über eine verbesserte Überladungsauflösung, wodurch mehr Code das erwartete Verhalten aufweist. Ein Punkt, an dem Sie möglicherweise ein Problem nicht mehr feststellen, ist bei der Auswahl zwischen Überladungen, die auf NULL festlegbare Werttypen akzeptieren, oder beim Übergeben von Methodengruppen (anstelle von Lambdas) an Überladungen, die Delegate akzeptieren.

Ausnahmefilter
Sie können Ausnahmefilter in catch-Klauseln verwenden, um zu bestimmen, ob die Ausnahme von einer catch-Klausel verarbeitet werden soll. Ohne dieses Feature müssen Sie die Ausnahme erneut auslösen, wodurch die in der erneut ausgelösten Ausnahme angegebene Aufrufliste abgeschnitten wird.

"Await" in Catch- und Finally-Blöcken
Sie können await in catch- und finally-Klauseln verwenden.

Auto-Eigenschaft-Initialisierer
Sie können Auto-Eigenschaften jetzt auf ähnliche Weise wie Felder initialisieren.

Auto-Eigenschaften nur mit Getter
Sie können jetzt schreibgeschützte Auto-Eigenschaften definieren, ohne eine Eigenschaft mit vollständiger Eigenschaftensyntax definieren zu müssen. Sie können die Eigenschaft dort, wo Sie diese deklarieren, oder im Konstruktor des Typs initialisieren.

Funktionsmember mit Ausdrücken
Sie können Member mit Ausdrücken im Codetexte in derselben einfachen Syntax deklarieren, die Sie bei Lambda-Ausdrücken verwenden. Siehe Methoden, Eigenschaften, Indexer, und Überladbare Operatoren.

Verwenden statischer Typen
Sie können zugreifbare statische Member statischer Typen importieren, sodass Sie auf die Member verweisen können, ohne den Zugriff mit dem Namen des Typs zu qualifizieren.

Neues in Visual Studio 2015

Anzeigen: