În acest articol
De fiecare dată când este creată o clasă sau o structură. se numește constructorul. Constructorii au un nume care se potrivește cu numele clasei sau structurii și, de obicei, inițializează membrii de date ai noului obiect.
În următorul exemplu, o clasă numită Taxi este definită folosind un constructor simplu. Apoi operatorul nou creează o instanță a acestei clase. Constructorul de taxi este apelat de noul operator imediat după ce obiectul nou este alocat memoriei.
Un constructor care nu acceptă niciun parametru se numește constructor implicit. Constructorii sunt numiți implicit ori de câte ori un obiect este instanțiat cu noul operator. iar argumentele pentru noi nu sunt adoptate. Pentru mai multe informații, consultați Constructori de instanțe.
Dacă clasa este statică. compilatorul C # alocă claselor fără constructori un constructor implicit deschis care vă permite să instanțiați clase. Pentru mai multe informații, consultați clasele statice și membrii de clasă statică.
Crearea instanțelor unei clase poate fi dezactivată făcând constructorul privat, după cum urmează:
Pentru mai multe informații, consultați Constructorii închise.
Constructorii pentru tipurile de structuri sunt asemănători constructorilor de clasă, dar structurile nu pot conține un constructor implicit explicit, deoarece este furnizat automat de compilator. Acest constructor inițializează fiecare câmp din struct cu o valoare implicită. Pentru informații suplimentare, consultați tabelul cu valori implicite. Constructorul este chemat în mod implicit numai dacă structul este creat utilizând variabila nouă. De exemplu, în acest cod, constructorul este utilizat în mod implicit pentru Int32 - aceasta oferă inițializarea unui întreg:
În același timp, următorul cod provoacă o eroare de compilator, deoarece nu folosește o aplicație nouă. și deoarece folosește un obiect neinitializat:
În plus, obiectele bazate pe structuri (inclusiv toate tipurile numerice încorporate) pot fi inițializate sau atribuite și apoi folosite, ca în exemplul următor:
În acest sens, nu este necesar să apelați constructorul implicit pentru un tip de valoare.
Ambele clase și structuri pot defini constructorii care acceptă parametrii. Constructorii care acceptă parametrii trebuie să fie apelați utilizând noul sau operatorul de bază. Clasele și structurile pot de asemenea să definească mai mulți constructori; pentru a determina constructorul implicit, niciuna dintre ele nu este necesară. exemplu:
Puteți crea această clasă utilizând una dintre următoarele afirmații:
Constructorul poate utiliza cuvântul cheie de bază pentru a apela constructorul de clasă de bază. De exemplu:
În acest exemplu, constructorul de clasă de bază este apelat înainte de executarea blocului corespunzător. Cuvântul cheie de bază poate fi utilizat cu sau fără parametri. Orice parametri pentru constructor pot fi utilizați ca parametri pentru bază sau ca parte a unei expresii. Pentru mai multe informații, consultați baza.
Dacă clasa de bază nu oferă un constructor implicit, clasa derivată trebuie să apeleze în mod explicit constructorul clasei de bază cu baza.
Un constructor poate apela un alt constructor în același obiect utilizând acest cuvânt cheie. Ca bază. Aceasta poate fi utilizată cu sau fără parametri, iar toți parametrii din constructor sunt disponibili fie ca parte, fie ca parte a expresiei. De exemplu, cel de-al doilea constructor din exemplul anterior poate fi rescris utilizând acest lucru.
Utilizarea acestui cuvânt cheie în exemplul de mai sus a determinat un apel către constructor:
Constructorii pot fi marcați ca publici. privat. protejat. interne sau interne protejate. Acești modificatori de acces determină modul în care utilizatorii de clasă pot crea o clasă. Pentru mai multe informații, consultați Modificatori de acces.
Puteți declara un constructor static utilizând cuvântul cheie static. Constructorii statici sunt chemați automat înainte de a accesa câmpurile statice și de obicei sunt utilizați pentru a inițializa membrii unei clase statice. Pentru mai multe informații, consultați constructorii statici.
C # Specificarea limbii
Pentru mai multe informații, consultați specificația C #. Specificația de limbă este o sursă prescriptivă de informații despre sintaxa și utilizarea limbajului C #.