Jellemző deklarálása
A jellemző deklarálása hasonlít egy mező deklarálásához. Meg kell adni típusát, és nevét. De ezen felül meg kell adni a get és set részét is.
class TKor
{
// elrejtett, nem publikus mező
private int _sugar;
// publikus, mégis védett jellemző
public int sugar
{
get
{
return _sugar;
}
set
{
if (value>0) _sugar=value;
else throw new Exception(”A sugár értéke nem lehet negatív”);
}
}
}
A ’jellemző’ (property) az osztály egy virtuális mezője. Ezen egy mezőnek látszó dolog, de a hátterében valamilyen kód áll. Ezzel valósíthatjuk meg elegánsan a mezők védelmét. Meggátolhatjuk, hogy olyan érték kerülhessen valamely mezőbe, amely értelmetlen.
A jellemzőbe beírandó érték a set szakasz futását idézi elő. A set szakasz megvizsgálja a beírandó értéket (value), ha megfelelőnek találja, akkor eltárolja a mezőben, ellenkező esetben megtagadja azt.
A ’jellemző’ értékének kiolvasása a get szakasz futását idézi elő. A get szakasz, mint függvény viselkedik. A kalkulált értéket egy return segítségével adja vissza a hívás helyére.
Olvasható jellemző
A jellemző deklarálása hasonlít egy mező deklarálásához. Meg kell adni típusát, és nevét. De ezen felül meg kell adni a get és set részét is. Nem kötelező mindkét rész megadása. Ha csak a get részét adjuk meg, akkor az csak olvasható jellemző lesz.
Tipikus példa a csak olvasható jellemzőre a tömbök. Length jellemzője, vagy a listák. Count jellemzője.
A get részben elő kell állítani egy, a jellemző típusának megfelelő értéket, és egy return segítségével visszaadni a hívás helyére. Ez leggyakrabban úgy történik, hogy a set által eltárolt helyről az ott lévő értéket kiolvassuk és visszaadjuk, de elképzelhető, hogy a get az értéket valamilyen kifejezés segítségével ’röptében’ állítja elő.
class TKor
{
// elrejtett, nem publikus mező
private int _sugar;
// publikus, mégis védett jellemző
public int sugar
{
get
{
return _sugar;
}
set
{
if (value>0) _sugar=value;
else throw new Exception(”A sugár értéke nem lehet negatív”);
}
}
}
Írható jellemző
A jellemző deklarálása hasonlít egy mező deklarálásához. Meg kell adni típusát, és nevét. De ezen felül meg kell adni a get és set részét is. Nem kötelező mindkét rész megadása. Ha csak a set részét adjuk meg, akkor az csak írható jellemző lesz.
A set részben a tárolandó értékre a value néven hivatkozhatunk. A set általában ezen értéket ellenőrzi valamilyen módszerrel (if). Amennyiben nem találja megfelelőnek, úgy egy kivétel feldobásával jelzi.
Amennyiben az érték megfelelő, úgy a set gondoskodik a tárolásról. Ezt leggyakrabban egy private mezőbe helyezi el, de más esetek is elképzelhetőek.
class TKor
{
// elrejtett, nem publikus mező
private int _sugar;
// publikus, mégis védett jellemző
public int sugar
{
get
{
return _sugar;
}
set
{
if (value>0) _sugar=value;
else throw new Exception(”A sugár értéke nem lehet negatív”);
}
}
}