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.

Lesezeit: 1 Min.
In Pocket speichern
vorlesen Druckansicht Kommentare lesen

(Bild: rawf8/Shutterstock.com)

Von
  • 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:

Der Dotnet-Doktor – Holger Schwichtenberg

Dr. Holger Schwichtenberg ist Chief Technology Expert bei MAXIMAGO, die Innovations- und Experience-getriebener Softwareentwicklung, u.a. in hochkritischen sicherheitstechnischen Bereichen, anbietet. Zudem ist er Leiter des Expertennetzwerks www.IT-Visions.de, das mit 38 renommierten Experten zahlreiche mittlere und große Unternehmen durch Beratung und Schulung bei der Entwicklung sowie dem Betrieb von Software unterstützt.

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)