Konstruktorid on oluline mõiste objektorienteeritud programmeerimises, eriti C#. Need võimaldavad sul klassi objekte algsete omadustega initsialiseerida. Selles juhendis õpid, kuidas saad kasutada mitut konstruktorit klassis tõhusalt, et suurendada oma rakenduste paindlikkust ja kasutajasõbralikkust.
Kõige olulisemad järeldused
- Sa saad defineerida mitu konstruktorit klassis, et pakkuda erinevaid initsialiseerimisvõimalusi.
- On olemas parameetriline konstruktor ja vaikimisi konstruktor.
- Parameetritel võivad olla vaikimisi väärtused, mida kasutatakse, kui ei ole spetsiaalseid väärtusi määratud.
Samm-sammult juhend
Alustame lihtsa klassi loomisega. Kasuta klassi, mis esindab autosid. Esiteks rakenda parameetriline konstruktor, mis võimaldab sul autot luues tootjat ja sõiduki tüüpi määrata. Nendes näidetes eeldame, et loodud sõidukid on kasutatud sõidukid.

Lisaks parameetrilisele konstruktorile lisame vaikimisi konstruktor. Seda kutsutakse, kui parameetreid ei edastata. Tegemist on parameetriteta konstruktoriga, mis määrab objekti omaduste jaoks eeldefineeritud väärtused, nagu tootja ja sõiduki tüüp.
Vaikimisi konstruktori deklareerimiseks tee see public ja nimeta see täpselt sama, mis klass ise. Näiteks nimeta Auto klassi konstruktor lihtsalt public Auto. Sellisel juhul seadme vaikimisi tootja väärtus "Opel Automobile GmbH" ja sõiduki tüübi väärtus "Corsa".
Nüüd, kui vaikimisi konstruktor on rakendatud, näita, kuidas seda kasutada. Sa saad luua uue auto, kutsudes lihtsalt vaikimisi konstruktorit ilma parameetreid edastamata. Kui auto on loodud, kuvab see auto omadused, et kontrollida, kas vaikimisi väärtused on õigesti seadistatud.

Nüüd laiendame Auto klassi kahe täiendava omadusega: värv ja sõiduki vanus. Need andmed on olulised, eriti kasutatud autode puhul. Kuid kasutajate sisestamisel võib juhtuda, et kasutaja ei esita kõik andmed. Seetõttu loome uue konstruktor, mis aktsepteerib neid täiendavaid parameetreid - st sõiduki tüüp, värv ja vanus.

Sa lood selle uue konstruktori täpselt nagu eelnevad ja kohandad loogikat uute parameetrite vastuvõtmiseks. Veendu, et seoksid sisemised muutujad edastatud väärtustega, et klass töötaks korrektselt. Samuti peab väljundmeetod olema kohandatud, et arvesse võtta uusi omadusi väljundil.

Omaduste kontrollimist teostatakse if-lause kaudu, et veenduda, et ainult mitte-null väärtused kuvatakse. Nii saad konkreetsed andmed sõidukite kohta, isegi kui mõned andmed on puudu.

Nüüd on aeg testida, kas kõik töötab õigesti. Loo uus auto, nimeta see „uus auto 2“ ja määra sõiduki tüüp, värv ja vanus. Pärast sõiduki loomist lase väljundit kutsuda, et kontrollida oma uue konstruktori tõhusust.
Nende testide abil saad näha, kuidas erinevad konstruktorid Auto klassis toimivad ja milliseid andmeid kuvada. Vaikimisi konstruktorit kasutatakse, kui parameetreid ei edastata, samas kui alternatiivsed konstruktorid aktsepteerivad konkreetseid detailandmeid.

Lõpuks, väikese harjutusena loo uus omadus, nagu „Registrinumber“, ja lisa uus konstruktor, mis aktsepteerib kõiki asjakohaseid andmeid – sõiduki tüüp, registrinumber, värv ja vanus. Kohanda väljundit ka, lisades if-else-lausete, et veenduda, et andmed kuvatakse õigesti.

Kokkuvõte – Mitmete konstruktorite tõhus kasutamine
Oled nüüd õppinud, kuidas rakendada mitut konstruktorit C# klassis ja omistada neile erinevaid parameetreid. Võimekus kasutada mitut konstruktorit suurendab sinu koodi paindlikkust ja muudab selle kohandatavaks erinevate rakendustel.
Korduma kippuvad küsimused
Kui palju konstruktoreid võin ma klassis omada?Kindlat ülemäära ei ole, saad defineerida nii palju konstruktorid, kui vajad, kui need erinevad oma parameetrite poolest.
Mis on erinevus vaikimisi konstruktori ja parameetrilise konstruktori vahel?Vaikimisi konstruktoril ei ole parameetreid ja see initsialiseerib objekti eeldefineeritud väärtustega, samas kui parameetriline konstruktor aktsepteerib parameetreid, et määrata objekti loomisel spetsiifilised väärtused.
Kas ma saan konstruktoreid ülemäärata?Jah, saad konstruktoreid ülemäärata, luues sama klassi sees mitu konstruktorit erinevate parameetrite loetelu abil.
Mis juhtub, kui ma ei defineeri konstruktorit?Kui konstruktorit ei ole deklareeritud, pakub kompilaator vaikimisi konstruktorit, mis ei tee mingit tegevust, kuid initsialiseerib objekti.##