Johdatus C #

Rakentajalla on erittäin tärkeä rooli olio-ohjelmoinnissa. Ymmärtäkäämme rakentajan rooli C #: ssa seuraavien kohtien avulla:

  • Rakentaja on luokan sisällä oleva erityinen menetelmä, joka vastaa luokan muuttujien alustamisesta.
  • Sen nimi on sama kuin luokan nimi.
  • Se suoritetaan automaattisesti, kun luomme luokan ilmentymän.
  • Rakentaja ei palauta arvoa.
  • Jos emme määrittele konstruktoria, implisiittisen konstruktorin tarjoaa aina luokka, jota kutsutaan oletuskonstruktoriksi.

Syntaksi:

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

Tässä julkinen opiskelija () on menetelmä, jolla ei ole paluutapaa, ei edes tyhjää, ja sen nimi on sama kuin luokan nimi eli 'Opiskelija'. Siten tämä menetelmä on tämän luokan rakentaja.

Milloin luomme tämän luokan objektin käyttämällä:

Student obj = new Student();

Sitten koodi rakentajan sisällä suoritetaan.

Rakentajan työskentely C #: ssä

1. Suunnittelija alustaa tietyn jäsenen tiedot uudelle objektille. 'Uusi' operaattori kutsuu sen heti, kun muisti on allokoitu uudelle objektille.

2. Täsmälliset rakentajat (käyttäjän määrittelemät rakentajat) voivat olla parametrittomia tai parametrisoituja. Jos se parametroidaan, rakentajalle siirretyt arvot voidaan osoittaa luokan datajäsenille.

3. Epäsuora rakentaja alustaa luokan muuttujat samalla arvolla, vaikka luommekin useita luokan esiintymiä.

Esimerkki:

Koodi:

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

lähtö:

Yllä olevan ohjelman kuvallinen esitys:

4. Määrittelemätön konstruktori parametrien avulla antaa meille mahdollisuuden alustaa luokan muuttujat eri arvolla joka kerta, kun luomme luokan esiintymää.

Esimerkki:

Koodi:

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

lähtö:

Yllä olevan ohjelman kuvallinen esitys:

C #: n viisi suositinta tyyppiä

C # tarjoaa viittä tyyppiä konstruktoreita. Ne ovat seuraavat:

1. Oletusrakentaja

  • Konstruktoria, jolla ei ole parametreja, kutsutaan oletuskonstruktoriksi. Jos emme määrittele sitä nimenomaisesti, kääntäjä antaa sen epäsuorasti.
  • Tällaisessa tapauksessa voimme kutsua sitä implisiittiseksi rakentajaksi. Oletus- tai implisiittinen konstruktori alustaa kaikki luokan datajäsenet oletusarvoillaan, kuten esimerkiksi kaikki numeeriset kentät nollaan ja kaikki merkkijono- ja objektikentät nollaksi.

Esimerkki:

Koodi:

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

lähtö:

2. Parametrisoitu rakentaja

Konstruktoria, jolla on ainakin yksi parametri, kutsutaan parametrisoiduksi konstruktoriksi. Parametrit rakentajalle voidaan siirtää luodessasi luokan esiintymää. Sen avulla voimme alustaa luokan jokaisen esiintymän eri arvoilla.

Esimerkki:

Koodi:

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

lähtö:

3. Kopiorakentaja

Se on parametrisoitu rakentaja, joka ottaa saman luokan objektin parametrina. Se kopioi olemassa olevan objektin arvon (joka välitetään parametrina) vastikään luotuun objektiin, jonka rakentaja välittää. Voimme sanoa, että se kopioi yhden objektin tiedot toiseen.

Esimerkki:

Koodi:

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

lähtö:

4. Staattinen rakentaja

  • Se voidaan määritellä liittämällä rakentajan nimi avainsanalla. Kääntäjä määrittelee sen implisiittisesti (ellei sitä ole määritelty nimenomaisesti), jos luokka sisältää staattisen muuttujan.
  • Se on luokassa ensimmäinen suoritettu lohko, ja se kutsutaan automaattisesti. Se suoritetaan vain kerran luokan esiintymien lukumäärästä riippumatta. Se on parametriton, eikä se hyväksy mitään pääsymuokkaimia.

Esimerkki:

Koodi:

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

lähtö:

5. Yksityinen rakentaja

Yksityisellä määrittelyllä luotua rakentajaa kutsutaan yksityiseksi rakentajaksi. Emme voi luoda luokan esiintymää, jos se sisältää vain yksityisen rakentajan ja se ei salli muiden luokkien johtaa tästä luokasta. Käytetään luokassa, joka sisältää vain staattisia jäseniä.

Esimerkki:

Koodi:

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

lähtö:

johtopäätös

Jos määrittelemme minkä tahansa tyyppisen konstruktorin luokassa, kääntäjän tarjoamassa luokassa ei ole implisiittistä rakentajaa. Kuten menetelmät, myös parametroidut konstruktorit voidaan ylikuormittaa eri parametreilla. Kääntäjän implisiittisesti määrittelemät rakentajat ovat aina julkisia.

Suositeltava artikkeli

Tämä on opas rakentajalle C #: ssä. Tässä keskustellaan C # -rakentajan tyypeistä ja sen työskentelystä sekä koodin toteutuksesta ja tuotosta. Voit myös käydä läpi muiden ehdotettujen artikkeleidemme saadaksesi lisätietoja -

  1. Rakentaja JavaScript ja tyypit
  2. Mikä on satunnaislukugeneraattori C #: ssä?
  3. Suunnittelija C ++ ja tyypit
  4. Kopiointirakentaja C #: ssä (esimerkit)
  5. Staattinen rakentaja Java | Toimii | Sovellukset