PROPRIETĂȚI
Proprietatea este un membru de tip metodă al clasei care ne permite să accesăm în citire sau în scriere o dată membru privată sau protejată a clasei folosind o sintaxă intuitivă, ca și cum am accesa o dată publică. Proprietatea este o metodă cu o sintaxă deosebită, în corpul căreia se găsesc două sub-metode speciale numite accesori, get și set. Get citește valoarea datei, set o modifică.
particularitățile proprietăților:
- sunt metode fără listă de parametri formali. Semnătura lor conține numai tip și nume.
- tipul este identic cu tipul datei membru asociate.
- accesorul set are un parametru implicit cu numele value care se folosește de regulă în atribuirea variabilă = value.
- numele proprietății este recomandat să fie același cu numele datei asociate, cu diferența că prima literă trebuie să fie majusculă.
- numele variabilei nu este menționat nicăieri la apel, ci doar numele proprietății. De aici rezultă accesul la date private și protejate.
namespace Proprietati
{
class ClasaMea
{
private int x;
public int P
{
get
{
Console.WriteLine("get");
return x;
}
set
{
Console.WriteLine("set");
x = value;
}
}
}
class Program
{
public static void Main()
{
ClasaMea obiect = new ClasaMea();
//linia urmatoare apeleaza accesorul
//'set' din proprietatea P si ii
//paseaza 10 lui ‘value’
obiect.P = 10;
int xVal = obiect.P;
// linia urmatoare apeleaza accesorul
//'get' din proprietatea P
Console.WriteLine(xVal);
Console.ReadLine();
}
}
}
INDEXATORI
Fie o clasă care are un membru de tip tablou.Indexatorii sunt metode membre ale clasei care ne permit să aplicăm operatorul [] instanței clasei, în loc să-l aplicăm tabloului.
Sintaxa declarării indexatorului este asemănătoare cu sintaxa declarării proprietății cu unele diferențe:
- numele indexatorului este întotdeauna cuvântul cheie this.
- lista de parametri conține obligatoriu un parametru formal care va fi folosit ca și index în tablou.
- există accesorii get și set.
- get nu are parametri și returnează tipul indexatorului.
- set are un parametru implicit numit value.
- proprietățile pot fi statice, indexatorii nu pot fi decât nestatici.
- ca și proprietățile, indexatorii permit accesul la date private. În fapt, numele datei private nici nu apare la apelul indexatorului ci este acoperit de numele obiectului (referința la obiect).
namespace Indexatori
{
class ClasaMea
{
public string[] data = new string[6];
public string this[int index] // in mod normal trebuia private, dar s-a pus public pentru a se
// putea afisa si fara indexator.
{
get
{
return data[index];
}
set
{
data[index] = value;
}
}
}
class Rezultat
{
public static void Main()
{
ClasaMea v = new ClasaMea();
v[0] = "Exemplu";
v[1] = "cu";
v[2] = "indexatori";
Console.WriteLine("{0} {1} {2}.", v[0], v[1], v[2]); //acces elemente tablou cu indexator
Console.WriteLine("{0} {1} {2}.",v.data[0], v.data[1], v.data[2]); //acces tablou in mod clasic
Console.ReadLine();
}
}
}
Cuvântul cheie this
Folosit în orice alte contexte decât într-un indexator, this este o referință către obiectul curent. Toate metodele nestatice ale clasei au această referință care se crează în momentul instanțierii obiectului sub formaClasaMea obiect = new ClasaMea(); în acest moment se crează alias-ul this=obiect.
This se folosește în două circumstanțe:
- pentru a referi o dată membru a obiectului curent care a re același nume cu numele unui parametru formal a metodei.
- pentru a întoarce o referință către obiectul curent.
{
private string nume;
private int varsta;
public Copil(string nume, int varsta) //parametrii formali au acelasi nume ca datele membru
{
this.nume=nume;
this.varsta=varsta;
}
}
Dacă scriam doar nume=nume, se făcea o auto-atribuire deoarece numele parametrului formal ascunde numele datelor membru.
Niciun comentariu:
Trimiteți un comentariu