Konstruktoren (C#-Programmierhandbuch)Constructors (C# Programming Guide)

Wenn eine class oder struct erstellt wird, wird deren Konstruktor aufgerufen.Whenever a class or struct is created, its constructor is called. Eine Klasse oder Struktur verfügt möglicherweise über mehrere Konstruktoren, die andere Argumente verwenden.A class or struct may have multiple constructors that take different arguments. Mit Konstruktoren können Programmierer Standardwerte festlegen, Instanziierungen einschränken und Code schreiben, der flexibel und leicht zu lesen ist.Constructors enable the programmer to set default values, limit instantiation, and write code that is flexible and easy to read. Weitere Informationen und Beispiele finden Sie unter Verwenden von Konstruktoren und Instanzkonstruktoren.For more information and examples, see Using Constructors and Instance Constructors.

StandardkonstruktorenDefault constructors

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.If you don't provide a constructor for your class, C# creates one by default that instantiates the object and sets member variables to the default values as listed in the Default Values Table. 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.If you don't provide a constructor for your struct, C# relies on an implicit default constructor to automatically initialize each field of a value type to its default value as listed in the Default Values Table. Weitere Informationen und Beispiele finden Sie unter Instanzkonstruktoren.For more information and examples, see Instance Constructors.

KonstruktorsyntaxConstructor syntax

Ein Konstruktor ist eine Methode, dessen Name derselbe ist wie der seines Typs.A constructor is a method whose name is the same as the name of its type. Die Methodensignatur enthält nur den Methodennamen und die Parameterliste; ein Rückgabetyp ist nicht enthalten.Its method signature includes only the method name and its parameter list; it does not include a return type. Im folgenden Beispiel wird der Konstruktor für eine Klasse mit dem Namen Person gezeigt.The following example shows the constructor for a class named Person.

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.If a constructor can be implemented as a single statement, you can use an expression body definition. Im folgenden Beispiel wird eine Location-Klasse definiert, deren Klassenkonstruktor einen einzelnen Zeichenfolgenparameter namens name enthält.The following example defines a Location class whose constructor has a single string parameter named name. Die Ausdruckstextdefinition weist das Argument dem Feld locationName zu.The expression body definition assigns the argument to the locationName field.

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

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

Statische KonstruktorenStatic constructors

Die vorherigen Beispiele haben alle Instanzkonstruktoren gezeigt, die ein neues Objekt erstellen.The previous examples have all shown instance constructors, which create a new object. Eine Klasse oder Struktur kann auch einen statischen Konstruktor haben, der statische Member dieses Typs initialisiert.A class or struct can also have a static constructor, which initializes static members of the type. Statische Konstruktoren sind parameterlos.Static constructors are parameterless. 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.If you don't provide a static constructor to initialize static fields, the C# compiler will supply a default static constructor that initializes static fields to their default value as listed in the Default Values Table.

Im folgenden Beispiel wird ein statischer Konstruktor verwendet, um ein statisches Feld zu initialisieren.The following example uses a static constructor to initialize a static field.

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.You can also define a static constructor with an expression body definition, as the following example shows.

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.For more information and examples, see Static Constructors.

In diesem AbschnittIn This Section

Verwenden von KonstruktorenUsing Constructors

InstanzkonstruktorenInstance Constructors

Private KonstruktorenPrivate Constructors

Statische KonstruktorenStatic Constructors

Gewusst wie: Schreiben eines KopierkonstruktorsHow to: Write a Copy Constructor

Siehe auchSee Also