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.

In Pocket speichern vorlesen Druckansicht

(Bild: rawf8/Shutterstock.com)

Lesezeit: 1 Min.
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 technischer Leiter des Expertennetzwerks www.IT-Visions.de, das mit 53 renommierten Experten zahlreiche mittlere und große Unternehmen durch Beratungen und Schulungen sowie bei der Softwareentwicklung unterstützt. Durch seine Auftritte auf zahlreichen nationalen und internationalen Fachkonferenzen sowie mehr als 90 Fachbücher und mehr als 1500 Fachartikel gehört Holger Schwichtenberg zu den bekanntesten Experten für .NET und Webtechniken in Deutschland.

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)