Neu in .NET 7 [7]: Auto-Default Structs in C# 11.0
Die jüngste Version von Microsofts Programmiersprache belegt in parameterlosen Konstruktoren die Felder und Properties von Strukturen mit Standardwerten.
(Bild: rawf8/Shutterstock.com)
- Dr. Holger Schwichtenberg
Ein parameterloser Konstruktor in einer Struktur musste vor C# 11.0 alle nicht in der Deklaration initialisierten Fields und Properties explizit mit einem Wert belegen wie ID
und Name
in folgendem Beispiel:
struct Experte
{
public int ID;
public string Name { get; set; }
public List<String> Themen { get; set; } = new List<string>();
public List<Experte> MitarbeiterTeam { get; set; } =
new List<Experte>();
struct Adresse
{
public string Strasse { get; set; }
public string PLZ { get; set; }
public string Ort { get; set; }
}
public Experte()
{
ID = 0;
Name = "unbekannt";
}
public Experte(int id, string name)
{
ID = id;
Name = name;
}
public int ThemenAnzahl { get { return this.Themen.Count; } }
public string GetThemenString()
{
return String.Join(", ", this.Themen);
}
}
Das hat sich mit C# 11.0 geändert: Die Datenmitglieder (Fields und Properties) von Strukturen müssen neuerdings in eigenen Konstruktoren nicht mehr explizit initialisiert werden, wenn diese keine Initialisierungswerte bei der Deklaration besitzen.
Seit C# 11.0 werden alle nicht explizit initialisierten Felder und Properties mit ihren Standardwerten initialisiert. Microsoft nennt das Feature Auto-Default Structs.
(rme)