Was ist ein constructor in c#? Und was ist genau mit zuweisung der Werte gemeint?

2 Antworten

Ein Konstruktor ist eine spezielle Funktion, die

  • denselben Namen wie die Klasse haben muss
  • im Gegensatz zu normalen Funktionen keinen Rückgabetyp definiert
  • dazu da ist, den Startzustand eines Objekts der Klasse zu definieren.

Immer wenn ein Objekt erstellt werden soll, ist ein passender Konstruktoraufruf nötig.

Würde eine Klasse keinen Konstruktor besitzen, könnten keine Objekte dieser Klasse kreiert werden. Da aber C# implizit stets einen parameterlosen, leeren Konstruktor (default constructor) erstellt, wenn man keinen eigenen Konstruktor in seiner Klasse definiert, tritt dieser Fall nicht ein.

Beispiel:

class Person
{
}

class Program
{
  public static void Main()
  {
    Person person = new Person(); // call default constructor
  }
}

Das folgende Beispiel wiederum soll einen ausführlicheren Anwendungsfall zeigen. Es definiert erneut eine Klasse namens Person, doch diesmal mit zwei Eigenschaften (für Name und Alter) sowie einem eigenen Konstruktor. Dieser fordert zwei Parameter, mit deren Werten er die Eigenschaften des Objekts vorbelegen kann.

class Person
{
  private int _age;
  private string _name;

  public Person(string name, int age)
  {
    _age = age;
    _name = name;
  }
}

class Program
{
  public static void Main()
  {
    Person max = new Person("Max", 89);
  }
}

In Main wird folgend ein neues Objekt der Klasse Person erstellt. Das Schlüsselwort new reserviert den notwendigen Speicherplatz für das Objekt, anschließend folgt der Konstruktoraufruf. Das Resultat ist ein Person-Objekt mit dem Namen Max und dem Alter 89.

Da die Klasse nur diesen einen Konstruktor definiert, müssen beim Erstellen eines Personenobjekts immer die erforderlichen Parameter für Name und Alter bedient werden.

Angenommen, man würde einen zweiten Konstruktor in der Klasse anlegen:

public Person(string name)
{
  // ...
}

wäre es ebenso möglich, ein Personenobjekt folgendermaßen zu erstellen:

Person otto = new Person("Otto");
Zudem meinte er das die geschweiften Klammern bis auf den constructor leer bleiben dürfen.

Das ist soweit nur eine Vorgabe, die von deinem Dozenten getroffen wurde. Technisch betrachtet kannst du selbst entscheiden, was im Konstruktor stehen soll. Der Konstruktor könnte auch bestimmte Methoden aufrufen oder einfach leer sein - je nachdem, was du als Startzustand für die Objekte brauchst, die du mit ihm erstellst.

Deine klasse ist ja nur sowas wie "eine blaupause".

Wenn du im hauptprogramm eine instanz von der klasse erzeugst wird speicher reserviert und mit den daten der instsnzierten klasse belegt.

Anschließend wird der konstruktor() automatisch aufgerufen.

Konstruktor = eine funktion!!! Darin stehen dann funktionen drinnen welche z.b. eine variabel x in deiner klasse mit einem wert initialisieren.

X=0;

Versuch mal deinen beispiel code ohne anweisungen im construktor zu compilieren. Ich glaube nämlich das geht schon aber dass dein lehrer der meinung ist man sollte auf nummer sicher gehen damit auf jeden fall eindeutige werte in deinen variabeln gespeichert sind