Introduktion til konstruktør i C #

Konstruktør spiller en meget vigtig rolle i objektorienteret programmering. Lad os forstå konstruktørens rolle i C # ved hjælp af følgende punkter:

  • En konstruktør er en speciel metode til stede i en klasse, der er ansvarlig for at initialisere klassens variabler.
  • Dets navn er det samme som klassens navn.
  • Det udføres automatisk, når vi opretter en forekomst af klassen.
  • En konstruktør returnerer ingen værdi.
  • Hvis vi ikke definerer en konstruktør, leveres en implicit konstruktør altid af klassen, der kaldes standardkonstruktøren.

Syntaks:

public class Student()
(
//constructor
public Student()
(
//code
)
)

Her er public Student () en metode, der ikke har nogen returtype, ikke engang er ugyldig, og dens navn er det samme som klassens navn, dvs. 'Student'. Således er denne metode konstruktøren af ​​denne klasse.

Når vi opretter et objekt i denne klasse ved hjælp af:

Student obj = new Student();

Derefter udføres koden inde i konstruktøren.

Arbejde med konstruktør i C #

1. Konstruktøren initialiserer datamedlemmer for det nye objekt. Det påberåbes af den 'nye' operatør umiddelbart efter, at hukommelsen er allokeret til det nye objekt.

2. Eksplicit konstruktører (konstruktører defineret af brugeren) kan være parameterløse eller parametriseres. Hvis det parametreres, kan de værdier, der sendes til konstruktøren, tildeles klassens datamedlemmer.

3. Den implicitte konstruktør initialiserer variabler i klassen med den samme værdi, selvom vi opretter flere forekomster af den klasse.

Eksempel:

Kode:

using System;
public class ConstructorDemo
(
public int num = 10;
public static void Main()
(
ConstructorDemo obj1 = new ConstructorDemo();
ConstructorDemo obj2 = new ConstructorDemo();
ConstructorDemo obj3 = new ConstructorDemo();
Console.WriteLine("obj1.num = "+obj1.num+"\nobj2.num = "+obj2.num
+"\nobj3.num = "+obj3.num);
)
)

Produktion:

Billedrepræsentation af ovenstående program:

4. Eksplicit konstruktør med parametre giver os mulighed for at initialisere variabler i klassen med en anden værdi, hver gang vi opretter et eksempel på den klasse.

Eksempel:

Kode:

using System;
public class ConstructorDemo
(
public int num;
//explicit constructor
public ConstructorDemo(int num)
(
this.num = num;
)
public static void Main()
(
ConstructorDemo obj1 = new ConstructorDemo(10);
ConstructorDemo obj2 = new ConstructorDemo(20);
ConstructorDemo obj3 = new ConstructorDemo(30);
Console.WriteLine("obj1.num = "+obj1.num+"\nobj2.num = "+obj2.num
+"\nobj3.num = "+obj3.num);
)
)

Produktion:

Billedrepræsentation af ovenstående program:

Top 5 typer konstruktører i C #

C # leverer fem typer konstruktører. De er som følger:

1. Standardkonstruktør

  • En konstruktør uden nogen parameter kaldes Standardkonstruktør. Hvis vi ikke definerer det eksplicit, leveres det implicit af kompilatoren.
  • I et sådant tilfælde kan vi kalde det implicit konstruktør. Standard eller implicit konstruktør initialiserer alle datadelementer i klassen med deres standardværdier såsom alle numeriske felter til nul og alle streng- og objektfelter til null.

Eksempel:

Kode:

using System;
public class DefaultConstructor
(
public int num;
public string str;
)
public class Demo
(
public static void Main()
(
DefaultConstructor obj = new DefaultConstructor();
Console.WriteLine("obj.num = "+obj.num+"\nobj.str = "+obj.str);
)
)

Produktion:

2. Parameteriseret konstruktør

Konstruktør med mindst en parameter kaldes Parameterized Constructor. Parametre til konstruktøren kan sendes, mens klassen oprettes. Det giver os mulighed for at initialisere hvert tilfælde af en klasse med forskellige værdier.

Eksempel:

Kode:

using System;
public class ParameterizedConstructor
(
public int num;
public string str;
//parameterized constructor
public ParameterizedConstructor(int num, string str)
(
this.num = num;
this.str = str;
)
)
public class Demo
(
public static void Main()
(
//passing values to constructor while creating instance
ParameterizedConstructor obj = new ParameterizedConstructor(50, "constructor");
Console.WriteLine("obj.num = "+obj.num+"\nobj.str = "+obj.str);
)
)

Produktion:

3. Kopier konstruktør

Det er en parameteriseret konstruktør, der tager samme klasses objekt som en parameter. Det kopierer det eksisterende objekts værdi (som overføres som parameter) til det nyoprettede objekt, der er instantieret af konstruktøren. Vi kan sige, at det kopierer data fra et objekt til et andet objekt.

Eksempel:

Kode:

using System;
public class CopyConstructor
(
public int num;
public CopyConstructor(int num)
(
this.num = num;
)
//copy constructor
public CopyConstructor(CopyConstructor obj)
(
num = obj.num;
)
)
public class Demo
(
public static void Main()
(
CopyConstructor obj1 = new CopyConstructor(50);
//passing same class's object as parameter
CopyConstructor obj2 = new CopyConstructor(obj1);
Console.WriteLine("Original object:");
Console.WriteLine("obj1.num = "+obj1.num);
Console.WriteLine("\nCopied object:");
Console.WriteLine("obj2.num = "+obj2.num);
)
)

Produktion:

4. Statisk konstruktør

  • Det kan defineres ved at præfikse konstruktørens navn med et nøgleord. Det defineres implicit af kompilatoren (hvis ikke defineret eksplicit), hvis klassen indeholder en statisk variabel.
  • Det er den første blok, der udføres i klassen og kaldes automatisk. Det udføres kun én gang uanset antallet af klasseforekomster. Det er parameterløst og accepterer ikke nogen adgangsmodifikator.

Eksempel:

Kode:

using System;
public class StaticConstructor
(
//static constructor
static StaticConstructor()
(
Console.WriteLine("Static constructor executed");
)
public static void Display()
(
Console.WriteLine("\nDisplay method executed");
)
)
public class Demo
(
public static void Main()
(
StaticConstructor.Display();
)
)

Produktion:

5. Privat konstruktør

Konstruktør oprettet med privat specificator kaldes en privat konstruktør. Vi kan ikke oprette et eksempel på klassen, hvis det kun indeholder privat konstruktør, og det ikke tillader andre klasser at stamme fra denne klasse. Bruges i klassen, der kun indeholder statiske medlemmer.

Eksempel:

Kode:

using System;
public class PrivateConstructor
(
public static int num = 100;
//private constructor
private PrivateConstructor()
(
)
)
public class Demo
(
public static void Main()
(
//PrivateConstructor obj = new PrivateConstructor(); //Error
Console.WriteLine("num = "+PrivateConstructor.num);
)
)

Produktion:

Konklusion

Hvis vi definerer en hvilken som helst type konstruktør i klassen, vil der ikke være nogen implicit konstruktør i klassen leveret af kompilatoren. Ligesom metoder kan parameteriserede konstruktører også overbelastes med forskellige antal parametre. Konstruktører, der defineres implicit af kompilatoren, er altid offentlige.

Anbefalet artikel

Dette er en guide til konstruktør i C #. Her diskuterer vi typer af konstruktører i C # og dens arbejde sammen med kodeimplementering og output. Du kan også gennemgå vores andre foreslåede artikler for at lære mere -

  1. Konstruktør i JavaScript og typer
  2. Hvad er Random Number Generator i C #?
  3. Konstruktør i C ++ og typer
  4. Copy Constructor i C # (eksempler)
  5. Statisk konstruktør i Java | Arbejder | Applikationer

Kategori: