În C-Constructorilor ascuțite

În această lecție vom vorbi despre un astfel de membru important al clasei, ca designeri.

Designer - o metodă de clasă, concepute pentru a inițializa obiectul atunci când sozdanii.Initsializatsiya - este sarcina de parametrii inițiali de obiecte / variabile atunci când acestea sunt create.

In clasa, care nu este declarată nici un proiectant, există un constructor implicit implicită care se numește atunci când un obiect este creat cu ajutorul noului operator.

publice [-name] ([argument])
// organism constructor
>


De exemplu, avem o mașină de clasă. Crearea unui nou vehicul, valoarea alerga și cantitatea de combustibil din rezervor, are sens pentru a pune egal cu zero:

clasa de mașini
kilometraj dublu privat;
combustibil dublu privat;


Fără designer de ne-ar fi după stabilirea unui obiect separat pentru a atribui valori domeniilor sale, ceea ce este foarte incomod.

Designerii pot avea, de asemenea, parametri.

Exemplu cu aceeași mașină, abia acum, când obiectul este creat, putem specifica orice valori inițiale:

clasa de mașini
kilometraj dublu privat;
combustibil dublu privat;

Car publice (dublu kilometraj, combustibil dublu)
this.mileage = kilometraj;
this.fuel = combustibil;
>
>
programul de clasă
static void Main (string [] args)
Car newCar = new Car (100, 50); // apelează constructorul cu parametrii
>
>

In exemplul de mai sus, utilizați cuvântul cheie acest lucru.
Pointer la - este un pointer la obiectul pentru care a fost numită o metodă non-statică. Cuvântul cheie this oferă acces la instanța curentă a clasei. Un exemplu clasic în acest sens. doar constructori, pentru aceleași domenii nume de clasă și constructor de argumente. Acest cuvânt cheie este ceva de genul numele unui obiect, prin care avem acces la obiectul curent.

Clasa poate indica o mulțime de designeri, principalul lucru pe care acestea au fost semnături diferite. Semnătura. în cazul constructorilor - este un set de argumente. De exemplu, nu puteți crea doi constructori care să ia două argumente de tip int.

Un exemplu de utilizare a mai multor constructori:

clasa de mașini
kilometraj dublu privat;
combustibil dublu privat;

Car publice (dublu kilometraj, combustibil dublu)
this.mileage = kilometraj;
this.fuel = combustibil;
>
>
programul de clasă
<
static void Main (string [] args)
Car newCar = new Car (); // a crea o mașină cu setările implicite, 0 și 0
Car newCar2 = new Car (100, 50); // a crea o masina cu parametrii specificați
>
>


În cazul în care clasa definește unul sau mai mulți constructori cu parametri, nu putem crea un obiect printr-un constructor implicit implicită:

clasa de mașini
kilometraj dublu privat;
combustibil dublu privat;

Car publice (dublu kilometraj, combustibil dublu)
this.mileage = kilometraj;
this.fuel = combustibil;
>
>
programul de clasă
<
static void Main (string [] args)
Car newCar = new Car (100, 50);
Car newCar2 = new Car (); // eroare, clasa nu este definit parametrii de constructor
>
>

Crearea unui student de clasă, definiți-câmpuri: nume, desigur, în cazul în care el a avut o bursă. Creați o clasă de câțiva designeri pentru a specifica posibilă o dată toți parametrii specificați sau mai multe pentru a crea copii.

Proprietăți în ascuțite-C. Ia-Accessor și setul. proprietăți automate

În această lecție, vom continua să ia în considerare membrii clasei, și să aibă proprietățile cozii.

[Acces modificator] [tip] [PROPERTY_NAME]
obține
// corp Accessor citit din domeniu
>

set
// Accessor organism de înregistrare într-un domeniu
>
>


Aici este un exemplu de utilizare a proprietăților. Există un elev de clasa. și are un curs de câmp privat, care nu poate fi mai mică de un an și mai mare de cinci. Pentru a controla accesul la acest domeniu va fi utilizat de proprietate An:


Pur și simplu pune, cele două metode sunt puse în aplicare în proprietate. Corpul Accessor get poate fi logica de acces mai complexe, dar în cele din urmă trebuie să returneze valoarea câmpului sau o valoare diferită folosind declarația de returnare. În prezent setul Accessor valoarea parametrului implicit. care conține o valoare atribuită proprietății (în exemplul de mai sus, atunci când înregistrarea, znachenievalue este „0“).

Dacă, de exemplu, am făcut doar anul câmp deschis și nu a utilizat nici o metodă sau o proprietate pentru a accesa, am putea fi scris în acest domeniu, la orice valoare, inclusiv incorectă, și astfel încât să putem controla de citire și scriere.

Pentru controlul accesului, am putea folosi tehnici simple aici, dar pentru acest lucru ne-ar trebui să pună în aplicare două metode distincte, cu nume diferite, și să le accesați, trebuie să utilizați paranteze, care adaugă inconveniente inutile. Iată cum să arate la fel folosind programul tehnici (în practică, utilizarea proprietăți):

clasa Student
an int privat;

publice GetYear int ()
reveni an;
>
void SetYear publice (valoare int)
în cazul în care (valoare <1)
an = 1;
else if (valoare> 5)
an = 5;
an altceva = valoare;
>
>
programul de clasă
<
static void Main (string [] args)
st1 Student = new Student ();
st1.SetYear (0);
Console.WriteLine (st1.GetYear ());
Console.ReadKey ();
>
>


Proprietatea poate oferi, de asemenea, acces numai pe un câmp de citire sau scrie-numai. Dacă, de exemplu, trebuie să refuze accesul la înregistrare, pur și simplu nu indică accessor setat. exemplu:

clasa Student
an int privat;

Student publice (int y) // constructor
an = y;
>

public int An
obține
reveni an;
>
>
>
programul de clasă
<
static void Main (string [] args)
Student st1 = new Student (2);

Console.WriteLine (st1.Year); // citeste
st1.Year = 5; // eroare, proprietate este read-only
Console.ReadKey ();
>
>


Este demn de amintit că proprietatea în sine nu specifică spațiul de memorie pentru stocarea câmpului, și, prin urmare, trebuie să declare separat câmpul, la care accesul se va administra proprietatea.

[Acces modificator] [tip] [PROPERTY_NAME]


Astfel de proprietăți au Accessor lor nu este corpul. Exemplu de utilizare:

clasa Student
public int An
>
programul de clasă
<
static void Main (string [] args)
st1 Student = new Student ();

st1.Year = 0;
Console.WriteLine (st1.Year);
Console.ReadKey ();
>
>


proprietăți puse în aplicare în mod automat, este logic să folosească atunci când nu este nevoie de a impune restricții cu privire la posibilele valori implicite proprietățile câmpului.

Și apoi s-ar putea întreba, și care este diferența dintre câmpuri deschise simple și proprietăți automate. În aceste proprietăți este abilitatea de a le face doar în citire sau scrie-numai. Pentru a face acest lucru, am folosit un modificator de acces privat, înainte de numele accessor:

public int An // proprietate este doar scrie
public int An read-only // proprietate

Creați un televizor clasă. declare un volum de câmp. pentru a avea acces la acest domeniu, punerea în aplicare a proprietății. Volumul poate fi în intervalul de la 0 la 100.

articole similare