C#-Konstruktor

C#-Konstruktor

In diesem Artikel lernen wir:

Was ist ein Konstruktor?

Der C#-Konstruktor wird zum Zeitpunkt der Objekterstellung aufgerufen. Es konstruiert die Werte, d. h. stellt Daten für das Objekt bereit, weshalb es als Konstruktor bekannt ist.

Ein Konstruktor ist eine spezielle Methode, die zum Initialisieren eines Objekts verwendet wird. Jede Klasse hat einen Konstruktor. Wenn wir keinen Konstruktor explizit für eine C#-Klasse deklarieren, erstellt der Compiler einen Standardkonstruktor für diese Klasse. Ein Konstruktor hat keinen Rückgabetyp. Konstruktoren sind für die Objektinitialisierung und die Speicherzuweisung ihrer Klasse verantwortlich.

Regeln zum Erstellen von Constructor?

Für den Konstruktor sind grundsätzlich zwei Regeln definiert.

  1. Konstruktorname muss mit Klassenname identisch sein
  2. Konstruktor darf keinen expliziten Rückgabetyp haben

Art von Konstruktoren:

Es gibt zwei Arten von Konstruktoren:

  1. Standardkonstruktor (No-Arg-Konstruktor)
  2. Parametrisierter Konstruktor

C#-Standardkonstruktor:

Ein Konstruktor ohne Parameter wird als Standardkonstruktor bezeichnet.

Beispiel:

using System; 
Class Student{
 int roll; float marks;
 public Student() //constructor
{ 
 roll=0; 
 marks=0.0; 
 }
 // other members 
}

Der oben erwähnte Konstruktor Student() benötigt kein Argument, daher ist er ein Beispiel für einen standardmäßigen/nicht parametrisierten Konstruktor.
Mit dieser Art von Konstruktor wird das Objekt wie folgt erstellt:
 Student obj1 = new Student();

C#-parametrisierter Konstruktor:

Class Student 
{ 
int roll; 
float marks;
public Student(int a, float b)//constructor
{ 
 roll = a; 
 marks = b; 
 } 
//other members
 }

Der oben definierte Konstruktor nimmt zwei Argumente, ein int und ein anderes float, um die Instanzmitglieder roll und markiert für das neu erstellte Objekt zu initialisieren und wird daher als parametrisierter Konstruktor bezeichnet. Mit dieser Art von Konstruktor wird das Objekt wie folgt erstellt:
 Student obj = new Student( 17 , 58.08F);

Konstruktorüberladung:

Wie Methoden kann auch ein Konstruktor überladen werden. Überladene Konstruktoren werden anhand ihres Parametertyps oder ihrer Parameteranzahl unterschieden. Das Überladen von Konstruktoren unterscheidet sich nicht wesentlich vom Überladen von Methoden. Beim Überladen von Methoden haben Sie mehrere Methoden mit demselben Namen, aber unterschiedlicher Signatur, während Sie beim Überladen von Konstruktoren mehrere Konstruktoren mit unterschiedlichen Signaturen haben, der einzige Unterschied besteht darin, dass der Konstruktor in C# keinen Rückgabetyp hat.

using System; 
public Class OverloadStudent 
{ 
public OverloadStudent () 
{ 
//Default constructor 
} 
public OverloadStudent (int age) 
{ 
//Single parameter constructor 
} 
public OverloadStudent (int age, string name) 
{ 
//two parameter constructor 
} 
} 

Nun folgend sind die Möglichkeiten, wie wir das Objekt instanziieren können
OverloadStudent obj=new OverloadStudent() ; //Default constructor will get called
OverloadStudent obj=new OverloadStudent(43) ; //Single parameter constructor will get called
OverloadStudent obj=new OverloadStudent(47,"Steve") ; //Two parameters constructor will get called

Unterschied zwischen C#-Konstruktor und C#-Methoden:

Statischer Konstruktor:

Der statische Konstruktor ist ein spezieller Konstruktor, der aufgerufen wird, bevor das erste Objekt der Klasse erstellt wird. Es wird verwendet, um statische Daten zu initialisieren oder um eine bestimmte Aktion auszuführen, die nur einmal ausgeführt werden muss.
Der Zeitpunkt der Ausführung des statischen Konstruktors ist nicht bekannt, aber er liegt definitiv vor der ersten Objekterstellung – möglicherweise zu diesem Zeitpunkt des Ladens der Baugruppe.

//Example1
using System;
public Class Student
 {
 static Student() 
{ 
// initialize static members only.
 }
 // other methods here.
 }
// Example2
using System;
public class MyStaticClass 
{ 
static int count; 
static MyStaticClass() 
{ 
count = 0; 
Console.WriteLine("Static class is initialized"); 
} 
public static void MyMethod(string name) 
{ 
Console.WriteLine("Static class is initialized " + name); 
} 
}
MyStaticClass.MyMethod("Steve") ; //method call
//constructor will be called automatically

Output:
Static class is initialized Hello Steve

Regeln für statischen Konstruktor:

  • Eine Klasse kann nur einen statischen Konstruktor haben
  • Statischer Konstruktor darf keine Parameter haben
  • Statischer Konstruktor darf keinen Zugriffsspezifizierer haben
  • Es wird verwendet, um die statischen Datenmitglieder der Klasse zu initialisieren
  • für eine beliebige Anzahl von Objekterstellung wird der statische Konstruktor nur einmal ausgeführt
  • Der statische Konstruktor wird ausgeführt, wenn die Klasse verwendet wird
  • Der statische Konstruktor kann vom Programmierer nicht explizit aufgerufen werden

Wir können 2 Konstruktoren haben.

using System; 
public Class question {
 static Students()
 { 
//initialize static member only.
 } 
public Students() 
{ 
// codes for the first derive class constructor. 
 }
 } 

Privater Konstruktor:

Ein privater Konstruktor ist ein spezieller Instanzkonstruktor, der in Klassen verwendet wird, die nur statische Elemente enthalten.
Wenn eine Klasse einen oder mehrere private Konstruktoren und keinen öffentlichen Konstruktor hat, dürfen andere Klassen keine Instanz dieser Klasse erstellen.
>

using System; 
public Class Student{
private Student() 
{ 
 Console.WriteLine("This is no parameter private constructor");
 }
 public Student(int a):this() 
{ 
Console.WriteLine("This is one parameter public constructor");
 }
 // other methods
 }

Das Objekt der Klasse kann wie folgt erstellt werden:
 Student obj = new Student(20) ; //it will work fine.

Aber das Definieren von Objekten wie diesem wird nicht funktionieren.
 Student obj = new Student() ; // error of inaccessibility will be occur.

Regeln für private Konstruktoren:

  • Eine Verwendung des privaten Konstruktors ist, wenn wir nur ein statisches Mitglied haben.
  • Es bietet die Implementierung eines Singleton-Klassenmusters
  • Sobald wir den Konstruktor (private/public/any) bereitstellen, fügt der Compiler den öffentlichen Konstruktor ohne Parameter keiner Klasse hinzu.