Uvod v Konstruktor v C #

Konstruktor igra zelo pomembno vlogo v objektno usmerjenem programiranju. Razumejmo vlogo konstruktorja v C # s pomočjo naslednjih točk:

  • Konstruktor je posebna metoda, prisotna znotraj razreda, ki je odgovorna za inicializacijo spremenljivk razreda.
  • Ime je enako imenu razreda.
  • Samodejno se izvrši, ko ustvarimo primerek razreda.
  • Konstruktor ne vrne nobene vrednosti.
  • Če konstruktorja ne definiramo, implicitni konstruktor vedno zagotavlja razred, ki se imenuje privzeti konstruktor.

Sintaksa:

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

Tukaj je javni Student () metoda, ki nima nobene vrste vrnitve, niti ni razveljavljena in je njeno ime enako imenu razreda, tj. 'Študent'. Tako je ta metoda konstruktor tega razreda.

Ko bomo ustvarili predmet tega razreda z uporabo:

Student obj = new Student();

Nato se izvede koda znotraj konstruktorja.

Delo konstruktorja v C #

1. Konstruktor inicializira člane podatkov za nov objekt. "Novi" operater ga pokliče takoj, ko pomnilnik dodeli nov objekt.

2. Izrecni konstruktorji (konstruktorji, ki jih določi uporabnik) so lahko brez parametrov ali parametrizirani. Če je parametrizirano, potem lahko vrednosti, posredovane konstruktorju, dodelimo podatkovnim članom razreda.

3. implicitni konstruktor inicializira spremenljivke razreda z isto vrednostjo, tudi če ustvarimo več primerkov tega razreda.

Primer:

Koda:

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);
)
)

Izhod:

Slikovna predstavitev zgornjega programa:

4. Izrecni konstruktor s parametri nam omogoča, da vsakič, ko ustvarimo primerek tega razreda, inicializiramo spremenljivke razreda z drugačno vrednostjo.

Primer:

Koda:

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);
)
)

Izhod:

Slikovna predstavitev zgornjega programa:

Najboljših 5 vrst konstruktorjev v C #

C # ponuja pet vrst konstruktorjev. To so:

1. Privzeti konstruktor

  • Konstruktor brez katerega koli parametra se imenuje Privzeti konstruktor. Če ga ne definiramo izrecno, ga bo implicitno zagotovil prevajalnik.
  • V takem primeru ga lahko imenujemo implicitni konstruktor. Privzeti ali implicitni konstruktor inicializira vse člane podatkov razreda s privzetimi vrednostmi, kot so vsa numerična polja na nič, vsa polja nizov in objektov pa v nič.

Primer:

Koda:

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);
)
)

Izhod:

2. Parametriziran konstruktor

Konstruktor z vsaj enim parametrom se imenuje Parameterized Constructor. Med ustvarjanjem primerka razreda se lahko posredujejo parametri konstruktorju. Omogoča nam, da inicializiramo vsak primerek razreda z različnimi vrednostmi.

Primer:

Koda:

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);
)
)

Izhod:

3. Konstruktor kopiranja

To je parametriziran konstruktor, ki vzame objekt istega razreda kot parameter. Vrednost obstoječega predmeta (ki je posredovana kot parameter) kopira na novo ustvarjeni objekt, ki ga je graditelj instanciral. Lahko rečemo, da kopira podatke enega predmeta v drug objekt.

Primer:

Koda:

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);
)
)

Izhod:

4. statični konstruktor

  • Določimo ga lahko s predpono imena konstruktorja s ključno besedo. Prevajalnik jih implicitno definira (če ni izrecno opredeljen), če razred vsebuje katero koli statično spremenljivko.
  • To je prvi blok, ki se izvrši v razredu in se pokliče samodejno. Izvede se samo enkrat, ne glede na število primerkov razreda. Brez parametrov je in ne sprejema nobenega modifikatorja dostopa.

Primer:

Koda:

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();
)
)

Izhod:

5. Zasebni konstruktor

Konstruktor, ustvarjen z zasebnim specifikatorjem, se imenuje zasebni konstruktor. Ne moremo ustvariti primerka razreda, če vsebuje samo zasebni konstruktor in ne dovoljuje, da bi drugi razredi izhajali iz tega razreda. Uporablja se v razredu, ki vsebuje samo statične člane.

Primer:

Koda:

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);
)
)

Izhod:

Zaključek

Če v razredu definiramo katero koli vrsto konstruktorja, potem v razredu, ki ga ponuja prevajalnik, ne bo nobenega implicitnega konstruktorja. Tako kot metode lahko tudi parametrizirane konstruktorje preobremenimo z različnim številom parametrov. Konstruktorji, ki jih implicitno opredeli prevajalnik, so vedno javni.

Priporočeni članek

To je vodnik za Constructor v C #. Tukaj razpravljamo o tipih Constructorja v C # in njegovem delovanju skupaj z implementacijo koda in izhodom. Če želite izvedeti več, lahko preberete tudi druge naše predlagane članke -

  1. Konstruktor v JavaScript in vrste
  2. Kaj je generator naključnih števil v C #?
  3. Konstruktor v C ++ in tipih
  4. Kopiraj konstruktor v C # (primeri)
  5. Statični konstruktor na Javi | Delo | Prijave