Training - Beratung - Projektarbeiten

www.David-Tielke.de

Webcast C# 6.0 – Folge 2: Read Only Auto Properties

Einer der Erweiterungen in C# 6.0, die sehr viel boilerplated Code vermeiden können, sind die Read Only Auto Properties.

Im zweiten Teil der Webcastreihe zu den Erweiterungen aus C# 6.0, widmen wir uns dieser genialien kleinen Erweiterung und zeigen wo sie eingesetzt werden sollte und wo nicht.

Dazu aus der Dokumentation des Roslyn-Projektes:

Auto-properties can now be declared without a setter.
public class Customer
{
    public string First { get; } = "Jane";
    public string Last { get; } = "Doe";
}
The backing field of a getter-only auto-property is implicitly declared as readonly (though this matters only for reflection purposes). It can be initialized through an initializer on the property as in the example above. Also, a getter-only property can be assigned to in the declaring type’s constructor body, which causes the value to be assigned directly to the underlying field:
public class Customer
{
    public string Name { get; }
    public Customer(string first, string last)
    {
        Name = first + " " + last;
    }
}
This is about expressing types more concisely, but note that it also removes an important difference in the language between mutable and immutable types: auto-properties were a shorthand available only if you were willing to make your class mutable, and so the temptation to default to that was great. Now, with getter-only auto-properties, the playing field has been leveled between mutable and immutable.

 

Links

Webcast C# 6.0 - Folge 1: Auto Property Initializers

Ab heute versuche ich regelmäßig Webcasts zu aktuellen Themen auf meinem YouTube-Channel zu veröffentlichen. Das Startthema werden die Neuerungen in C# 6.0 sein, welche ich in ~10 Episoden beleuchten werde.

Heute gibt es den ersten Teil zum Thema "Auto Property Initializers".


Dazu aus der Beschreibung des Roslyn-Teams:

You can now add an initializer to an auto-property, just as you can in a field:
public class Customer
{
    public string First { get; set; } = "Jane";
    public string Last { get; set; } = "Doe";
}
The initializer directly initializes the backing field; it doesn’t work through the setter of the auto-property. The initializers are executed in order as written, just as – and along with – field initializers. Just like field initializers, auto-property initializers cannot reference this – after all they are executed before the object is properly initialized.

Links:

Webcast "Dressierte-Affen-Methode" zur Erkennung von SRP-Verletzungen - Update

In der dotnetpro Ausgabe 10/2015 befindet sich ein Artikel von mir zum Thema “Kohäsion und Kopplung” und wie damit zum einen Modularisierungen bewertet werden können, aber auch damit praktisch gearbeitet werden kann, um z.B. Verletzungen des Single Responsibility Principles zu erkennen.

Ich nenne dieses Verfahren “Methode für dressierte Affen”, da die Aufteilung von komplizierten Klassen damit sehr sehr einfach wird und auch durch Personen durchgeführt werden kann, welche weder SRP noch die Domäne an sich beherrschen. Da dieses Verfahren textuell relativ schwierig zu beschreiben ist, habe ich dazu ein kurzes Video erstellt, welches in meinem youtube-Channel abgerufen werden kann.

*** Update 22.09.2015 ***
Leider gab es bei dem Encoding ein paar Probleme, weshalb ich das Video erneut hochgeladen habe. Jetzt sollte alles passen, danke an die fleißigen Hinweisgeber.

Links
YouTube Channel
Video
Ausgabe 10/2015 der dotnetpro