© best_vector/Shutterstock.com
Windows Developer
Was kommt Neues in C#?

Sprachpflege mit Roslyn

Eine der aufsehenerregenden Ankündigungen von Microsoft auf der Konferenz Build 2014 war der Schritt, die Ergebnisse des Projekts „Roslyn“ Open Source zu machen. Hinter dem Codenamen versteckt sich nichts Geringeres als die komplette Neugestaltung und -entwicklung der C# und VB Compiler. Open Source bedeutet in diesem Zusammenhang neben der Veröffentlichung des Quellcodes auch das Publikmachen der Road Map. Neugierig, wie sich Ihr C#-Code in Zukunft verändern wird? In diesem Artikel fassen wir die kommenden Änderungen kompakt für Sie zusammen.

Rainer Stropek


Besserer C# Code durch funktionale Programmierung

Dank der Road Map sehen wir Entwickler, worauf wir uns in Sachen C#-Sprachneuerungen in nächster Zeit freuen dürfen und was wir mithilfe der Roslyn CTP sogar schon ausprobieren können.

Initialisierung von Auto-Properties

Ein kleiner Appetithappen zum Start gefällig? C# bekommt eine Möglichkeit, Auto-implemented Properties zu initialisieren. Sie können also in Zukunft public string FirstName { get; set; } = "Max Muster" schreiben.

Kaum erwähnenswert, meinen Sie? Wäre es auch, gäbe es nicht eine Zugabe. Werfen Sie zum Beispiel einen Blick auf Listing 1. Wollte man eine Klasse früher komplett immutable, also unveränderbar, machen, konnte man dafür das readonly-Schlüsselwort verwenden, verlor dadurch aber die Möglichkeit, Auto Properties zu verwenden (siehe Klasse Product_OldStyleWithField im Listing). Alternativ konnte man den Setter private machen, war dann aber gezwungen, zum Initialisieren einen Konstruktor zu schreiben (siehe Klasse Product_AutoProperty im Listing). Wie Sie im Listing an der Klasse Product_AutoPropertyInitializer sehen, gibt es jetzt Immutables, Auto-Properties und Initialisierung auf einmal. Elegant, oder?

Listing 1public class Product_OldStyleWithField{ // Note that we have to care for the private field // ourselves. private readonly Guid id = Guid.NewGuid(); public Guid Id { get { return this.id; } }} public class Product_AutoProperty{ public Product_AutoProperty() { this.Id = Guid.NewGuid(); }  // Note that we cannot define "Id" as "readonly" as // read-only properties are not supported in C#. public Guid Id { get; private set; }} public class Product_AutoPropertyInitializer{ // Note that "Id" is a getter-only property -> immutable :-) public Guid Id { get; } = Guid.NewGuid();}

Primary Constructors

Dass die verschiedenen Sprachen aus dem Hause Microsoft sich gegenseitig beeinflussen, hat man schon am Beispiel F# und C# gesehen. Das folgende Feature fand man in ähnlicher Form vor seinem Auftauchen in C# bereits in Microsofts neuer Sprache TypeScript. Es geht darum, Konstruktorparameter mit einem Access Modifier (z. B. private, public) zu versehen und sie dadurch ohne weiteren Aufwand zu Feldern zu machen. In C# wird diese neue Funktion als Primary Constructors bezeichnet, da man implizit einen Konstruktor für die jeweilige Klasse anlegt.

Schluss mit der Theorie, in Listing 2 finden Sie den Code. Achten Sie als Erstes auf die Deklaration der Klasse Product. Gleich h...

Windows Developer
Was kommt Neues in C#?

Sprachpflege mit Roslyn

Eine der aufsehenerregenden Ankündigungen von Microsoft auf der Konferenz Build 2014 war der Schritt, die Ergebnisse des Projekts „Roslyn“ Open Source zu machen. Hinter dem Codenamen versteckt sich nichts Geringeres als die komplette Neugestaltung und -entwicklung der C# und VB Compiler. Open Source bedeutet in diesem Zusammenhang neben der Veröffentlichung des Quellcodes auch das Publikmachen der Road Map. Neugierig, wie sich Ihr C#-Code in Zukunft verändern wird? In diesem Artikel fassen wir die kommenden Änderungen kompakt für Sie zusammen.

Rainer Stropek


Besserer C# Code durch funktionale Programmierung

Dank der Road Map sehen wir Entwickler, worauf wir uns in Sachen C#-Sprachneuerungen in nächster Zeit freuen dürfen und was wir mithilfe der Roslyn CTP sogar schon ausprobieren können.

Initialisierung von Auto-Properties

Ein kleiner Appetithappen zum Start gefällig? C# bekommt eine Möglichkeit, Auto-implemented Properties zu initialisieren. Sie können also in Zukunft public string FirstName { get; set; } = "Max Muster" schreiben.

Kaum erwähnenswert, meinen Sie? Wäre es auch, gäbe es nicht eine Zugabe. Werfen Sie zum Beispiel einen Blick auf Listing 1. Wollte man eine Klasse früher komplett immutable, also unveränderbar, machen, konnte man dafür das readonly-Schlüsselwort verwenden, verlor dadurch aber die Möglichkeit, Auto Properties zu verwenden (siehe Klasse Product_OldStyleWithField im Listing). Alternativ konnte man den Setter private machen, war dann aber gezwungen, zum Initialisieren einen Konstruktor zu schreiben (siehe Klasse Product_AutoProperty im Listing). Wie Sie im Listing an der Klasse Product_AutoPropertyInitializer sehen, gibt es jetzt Immutables, Auto-Properties und Initialisierung auf einmal. Elegant, oder?

Listing 1public class Product_OldStyleWithField{ // Note that we have to care for the private field // ourselves. private readonly Guid id = Guid.NewGuid(); public Guid Id { get { return this.id; } }} public class Product_AutoProperty{ public Product_AutoProperty() { this.Id = Guid.NewGuid(); }  // Note that we cannot define "Id" as "readonly" as // read-only properties are not supported in C#. public Guid Id { get; private set; }} public class Product_AutoPropertyInitializer{ // Note that "Id" is a getter-only property -> immutable :-) public Guid Id { get; } = Guid.NewGuid();}

Primary Constructors

Dass die verschiedenen Sprachen aus dem Hause Microsoft sich gegenseitig beeinflussen, hat man schon am Beispiel F# und C# gesehen. Das folgende Feature fand man in ähnlicher Form vor seinem Auftauchen in C# bereits in Microsofts neuer Sprache TypeScript. Es geht darum, Konstruktorparameter mit einem Access Modifier (z. B. private, public) zu versehen und sie dadurch ohne weiteren Aufwand zu Feldern zu machen. In C# wird diese neue Funktion als Primary Constructors bezeichnet, da man implizit einen Konstruktor für die jeweilige Klasse anlegt.

Schluss mit der Theorie, in Listing 2 finden Sie den Code. Achten Sie als Erstes auf die Deklaration der Klasse Product. Gleich h...

Neugierig geworden?


    
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang