Konstruktoren (C#-Programmierhandbuch)

Wenn eine class oder struct erstellt wird, wird deren Konstruktor aufgerufen. Eine Klasse oder Struktur verfügt möglicherweise über mehrere Konstruktoren, die andere Argumente verwenden. Mit Konstruktoren können Programmierer Standardwerte festlegen, Instanziierungen einschränken und Code schreiben, der flexibel und leicht zu lesen ist. Weitere Informationen und Beispiele finden Sie unter Verwenden von Konstruktoren und Instanzkonstruktoren.

Standardkonstruktoren

Wenn Sie keinen Konstruktor für die Klasse angeben, erstellt C# standardmäßig einen, der das Objekt instanziiert und Membervariablen auf die Standardwerte festlegt, wie in der Tabelle für Standardwerte aufgeführt. Wenn Sie keinen Konstruktor für die Struktur angeben, stützt sich C# auf einen impliziten Standardkonstruktor, um automatisch jedes Feld eines Werttyps auf seinen Standardwert zu initialisieren, wie in der Tabelle für Standardwerte aufgeführt. Weitere Informationen und Beispiele finden Sie unter Instanzkonstruktoren.

Konstruktorsyntax

Ein Konstruktor ist eine Methode, dessen Name derselbe ist wie der seines Typs. Die Methodensignatur enthält nur den Methodennamen und die Parameterliste; ein Rückgabetyp ist nicht enthalten. Im folgenden Beispiel wird der Konstruktor für eine Klasse mit dem Namen Person gezeigt.

public class Person
{
   private string last;
   private string first;
   
   public Person(string lastName, string firstName)
   {
      last = lastName;
      first = firstName;
   }
   
   // Remaining implementation of Person class.
}

Wenn ein Konstruktor als einzelne Anweisung implementiert werden kann, können Sie eine expression body definition (Ausdruckstextdefinition) verwenden. Im folgenden Beispiel wird eine Location-Klasse definiert, deren Klassenkonstruktor einen einzelnen Zeichenfolgenparameter namens name enthält. Die Ausdruckstextdefinition weist das Argument dem Feld locationName zu.

public class Location
{
   private string locationName;
   
   public Location(string name) => locationName = name;

   public string Name
   {
      get => locationName;
      set => locationName = value;
   } 
}

Statische Konstruktoren

Die vorherigen Beispiele haben alle Instanzkonstruktoren gezeigt, die ein neues Objekt erstellen. Eine Klasse oder Struktur kann auch einen statischen Konstruktor haben, der statische Member dieses Typs initialisiert. Statische Konstruktoren sind parameterlos. Wenn Sie keinen statischen Konstruktor zum Initialisieren von statischen Feldern angeben, wird der C#-Compiler einen statischen Standardkonstruktor bereitstellen, der statische Felder auf ihren Standardwert initialisiert, wie in der Tabelle für Standardwerte aufgeführt.

Im folgenden Beispiel wird ein statischer Konstruktor verwendet, um ein statisches Feld zu initialisieren.

public class Adult : Person
{
   private static int minimumAge;
   
   public Adult(string lastName, string firstName) : base(lastName, firstName)
   { }

   static Adult()
   {
      minimumAge = 18;
   }

   // Remaining implementation of Adult class.
}

Sie können einen statischen Konstruktor auch mit einer Ausdruckstextdefinition definieren, wie im folgenden Beispiel gezeigt.

public class Child : Person
{
   private static int maximumAge;
   
   public Child(string lastName, string firstName) : base(lastName, firstName)
   { }

   static Child() => maximumAge = 18;

   // Remaining implementation of Child class.
}

Weitere Informationen und Beispiele finden Sie unter Statische Konstruktoren.

In diesem Abschnitt

Verwenden von Konstruktoren

Instanzkonstruktoren

Private Konstruktoren

Statische Konstruktoren

Gewusst wie: Schreiben eines Kopierkonstruktors

Siehe auch

C#-Programmierhandbuch
Klassen und Strukturen
Finalizer
static
Why Do Initializers Run In The Opposite Order As Constructors? Part One (Warum werden Initialisierer In der entgegengesetzten Reihenfolge ausgeführt wie Konstruktoren? Teil Eins)