Constructors C-éles

Ebben a leckében fogunk beszélni egy ilyen fontos elem az osztály, mint a tervezők.

Designer - egy osztály módszer, amelyet inicializálni a tárgyat, amikor sozdanii.Initsializatsiya - ez a feladat kezdeti paraméterei tárgyak / változók, amikor azokat létrehozzák.

Az osztály, amely nem nyilvánították bármelyike ​​designer, van egy implicit alapértelmezett konstruktor, hogy hívják, amikor egy objektum jön létre az új üzemben.

nyilvános [-name] ([argumentum])
// kivitelező szervezet
>


Például, van egy osztály autó. Létrehozása egy új jármű, a futás értéket és az összeg a tartályban lévő üzemanyag, akkor van értelme, hogy egyenlő nullával:

osztályban Autó
privát kétágyas futásteljesítmény;
privát kétágyas tüzelőanyag;


Anélkül, designer mi lett volna létrehozása után egy külön objektum értékeket rendelni a területen, ami nagyon kellemetlen.

A tervezők is paramétereit.

Példa ugyanazt az autót, csak most, amikor az objektum létrehozásakor, tudjuk meg a kezdeti értékek:

osztályban Autó
privát kétágyas futásteljesítmény;
privát kétágyas tüzelőanyag;

nyilvános Car (dupla kilométer, kettős üzemanyag)
this.mileage = futásteljesítmény;
this.fuel = üzemanyag;
>
>
osztály Program
static void Main (string [] args)
Car newCar = új Car (100, 50); // hívja a kivitelező paraméterekkel
>
>

A fenti példában, használja a this kulcsszó.
Pointer hogy ezt - ez egy mutató az objektum számára, amely egy nem-statikus módszerrel hívták. Az erre a kulcsszóra hozzáférést biztosít a jelenlegi esetben az osztály. A klasszikus példa erre. ez csak gépfejlesztö, ugyanezen osztály nevét mezők és konstruktorargumentum. Ez a kulcsszó olyasmi, mint a neve egy tárgy, amelyen keresztül férhetnek hozzá az aktuális objektumot.

Az osztály jelezheti egy csomó tervezők, a lényeg, hogy ők különböző aláírásokat. Az aláírás. abban az esetben, kivitelezők - egy sor érvet. Például nem hozhat létre két konstruktőrök, hogy vegyen két int típusú érveket.

Egy példa segítségével több konstruktorok:

osztályban Autó
privát kétágyas futásteljesítmény;
privát kétágyas tüzelőanyag;

nyilvános Car (dupla kilométer, kettős üzemanyag)
this.mileage = futásteljesítmény;
this.fuel = üzemanyag;
>
>
osztály Program
<
static void Main (string [] args)
Autó newCar = új autó (); // létrehoz egy autó az alapértelmezett beállításokat, 0, 0
Car newCar2 = új Car (100, 50); // egy olyan autót a megadott paraméterekkel
>
>


Ha az osztály definiálja egy vagy több konstruktőr paraméterekkel, nem tudunk létrehozni egy objektumot át implicit alapértelmezett konstruktor:

osztályban Autó
privát kétágyas futásteljesítmény;
privát kétágyas tüzelőanyag;

nyilvános Car (dupla kilométer, kettős üzemanyag)
this.mileage = futásteljesítmény;
this.fuel = üzemanyag;
>
>
osztály Program
<
static void Main (string [] args)
Car newCar = új Car (100, 50);
Autó newCar2 = új autó (); // hiba, az osztály nincs definiálva konstruktor paraméterei
>
>

Hozzon létre egy osztályt Student, definiálnunk kell mezők: név, persze, ha ő volt ösztöndíjas. Hozzon létre egy osztályt néhány tervezők adja lehetséges, ha az összes megadott paraméterek vagy több másolatot létrehozni.

Tulajdonságok C-éles. Get akcesszor és a készlet. automatikus tulajdonságok

Ebben a leckében továbbra is figyelembe veszi az osztály tagjai, és hogy a tulajdonságait a sorban.

[Access módosító] [típus] [property_name]
kap
// tartozék test olvasni a területen
>

készlet
// tartozék rögzítése test egy területén
>
>


Itt látható egy példa a tulajdonságok használatával. Van egy osztály tanulói. és van egy saját területén természetesen, ami nem lehet kevesebb, mint egy, és nagyobb, mint öt. Való hozzáférés szabályozására ezen a területen kerülnek felhasználásra ingatlan év:


Egyszerűen fogalmazva, a két módszer végrehajtását az ingatlan. A get tartozék test lehet bonyolultabb hozzáférés logikát, de végül vissza kell térnie a mező értékét, vagy más értéket a return utasítást. A jelen beállított elérési implicit paraméter értékét. amely tartalmaz egy értéket rendelt tulajdonság (a fenti példában, amikor a felvétel, znachenievalue „0”).

Ha például az imént tette a mező évben nyitva, és nem használ semmilyen módszerrel, illetve ingatlan elérni, mi lehetett volna beírni, hogy semmilyen értéket, beleértve a hibás, és így tudjuk ellenőrizni a írni és olvasni.

Beléptető tudtuk használni az egyszerű technikákat, de erre lenne szükségünk, hogy végre két különböző módszerekkel, különböző nevekkel, és elérheti őket, akkor kell használni, zárójelben, ami növeli a felesleges kényelmetlenséget. Itt van, hogy ugyanúgy néz ki, olyan technikák alkalmazásával programot (a gyakorlatban használható tulajdonságok):

osztály Student
private int év;

public int GetYear ()
visszatérés év
>
public void SetYear (int érték)
if (érték <1)
év = 1;
else if (érték> 5)
év = 5;
mást év = érték;
>
>
osztály Program
<
static void Main (string [] args)
Student ST1 = új Student ();
st1.SetYear (0);
Console.WriteLine (st1.GetYear ());
Console.ReadKey ();
>
>


Az ingatlan is biztosít hozzáférést csak olyan területen írni vagy olvasni csak. Ha például van szükségünk, hogy megtagadja a hozzáférést a rekordot, akkor egyszerűen nem jelzik az elérhetőségi beállítva. például:

osztály Student
private int év;

nyilvános Student (int y) // konstruktor
év = y;
>

public int év
kap
visszatérés év
>
>
>
osztály Program
<
static void Main (string [] args)
Student ST1 = új Student (2);

Console.WriteLine (st1.Year); // olvasni
st1.Year = 5; // hiba, a tulajdon csak olvasható
Console.ReadKey ();
>
>


Érdemes megjegyezni, hogy az ingatlan maga nem határozza meg a tárolóval a területen, és ezért kell külön állapítsa meg a területen, ahová a belépés kezeli az ingatlan.

[Access módosító] [típus] [property_name]


Ezek a tulajdonságok megvannak a tartozék nem a test. Használati példa:

osztály Student
public int év
>
osztály Program
<
static void Main (string [] args)
Student ST1 = új Student ();

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


Automatikusan végrehajtott ingatlan, akkor van értelme használni, ha nincs szükség tartalmaznak korlátozásokat a lehetséges értékeket implicit mező tulajdonságai.

És akkor lehet kérni, és mi a különbség az egyszerű nyílt területeken és automatikus tulajdonságait. Ezekben tulajdonságok az a képesség, hogy azok csak olvasható vagy csak írható. Ehhez már használják egy hozzáférési módosítót saját neve előtt akcesszora:

public int év // tulajdonság csak írható
public int év // csak olvasható tulajdonság

Hozzon létre egy osztályt TV. állapítsa meg a mező kötetet. való hozzáférés ezen a területen, hajtsa végre a tulajdon. A térfogata lehet a tartományban 0-100.

Kapcsolódó cikkek