Kézi c #, struktúra
Ahogy már tudnod kell, osztályok referencia adattípusok. Ez azt jelenti, hogy egy adott osztály tárgyak állnak a linkre, ellentétben értékeinek egyszerű típusok állnak rendelkezésre közvetlenül. De néha közvetlen hozzáférést biztosít a tárgyak, hogy az értékek egyszerű típusok hasznos, ha például annak érdekében, hogy fokozza a program hatékonyságát. Végül is, minden hozzáférést tárgyak (még a legkisebb) a link kapcsolódó járulékos költségek a fogyasztás a számítástechnikai erőforrások és a RAM.
Ahhoz, hogy megoldja ezeket a nehézségeket C # szerkezet van kialakítva. amely hasonló az egy osztály, hanem egy olyan típusú érték, hanem a referencia adat típusát. Ie a szerkezetek különböznek az osztályok a módja a memóriában tárolódnak, és mivel használatban van (osztályok - a referencia-típusok kerülnek a kupacszerkezet - típusú értékek helyezni a stack), valamint néhány, a tulajdonságai (például struktúrák nem támogatják az öröklést) . A teljesítmény miatt, akkor használja a szerkezet kisebb adattípusok. Tekintettel azonban a szintaxis szerkezete nagyon hasonló az osztályok.
ahol a nevet jelöl egy adott szerkezet neve.
Mint osztályok, minden struktúra saját tagjai: metódusok, mezők indexers, tulajdonságok, metódusok, események, operátor. A szerkezeteket is lehetővé tette a tervezők, hogy meghatározza, de nem destruktor. Ugyanakkor a szerkezet nem lehet meghatározni kivitelező alapértelmezett (azaz, a tervező paraméterek nélkül). Az a tény, hogy a kivitelező, az úgynevezett alapértelmezett meghatározott valamennyi szerkezetek automatikusan történik, nem módosítható. Ez a szerkesztő inicializálja értékeit mezőstruktúrát alapértelmezés szerint definiált. És mivel a szerkezet nem támogatja öröklés, tagjaik nem lehet meghatározni, mint egy absztrakt, virtuális vagy védett.
a szerkezet a tárgy segítségével lehet létrehozni az új üzemeltető ugyanúgy, mint az objektum osztály, de ez nem feltétlenül szükséges. Végül is, ha az új üzemeltető használunk, a kivitelező az úgynevezett, az alapértelmezett. És amikor ez a szolgáltató nem használják, az objektum még mindig létre, de nem inicializált. Ebben az esetben, a kezdeti valamennyi tagjának a szerkezetet is manuálisan kell elvégezni.
Nézzünk egy példát a szerkezetek:
Ezért, ha az előző példában használunk UserInfo osztály szerkezetét, hogy a következő eredményeket kaptuk:
kinevezése szerkezetek
A kapcsolat a fenti, van egy ésszerű kérdés: miért a C # szerepel szerkezet, ha van szerényebb képességekkel, mint egy osztály? A válasz erre a kérdésre az, hogy javítsa a hatékonyságot és teljesítményt programokat. A szerkezetek érték típusok, így működhet közvetlenül, hanem hivatkozunk. Ezért, hogy működjön együtt a szerkezet nem igényel referencia típusú változó, ami azt jelenti, bizonyos esetekben, jelentős megtakarítást memóriát.
Sőt, a munka a szerkezet nem romlik a teljesítménye, mint a jellemző, hogy olvassa el az osztály objektum. Miután a hozzáférést a szerkezet közvetlenül végzett, mint a tárgyak - ezt a linket, mert az osztályok szerinti hozzáférési típus. Közvetett objektumok hozzáférésének feltételezi többletköltségeket a számítási erőforrások minden ilyen hozzáférést, míg fordul a szerkezetek nem jár ilyen költségeket. És különben is, ha csak meg kell tartani a csoport együtt kapcsolatos adatok, nem igényel kezelést és az öröklési kapcsolat, a szempontból a teljesítmény jobb nekik kiválasztani a szerkezetet.
Érdekes, hogy a C ++ is a szerkezet, és használja a struct kulcsszó. Azonban ezek a szerkezetek különböznek azoktól, amelyek elérhetők a C #. Például a C ++ szerkezet utal osztály, ami azt jelenti, hogy a szerkezet és az osztály ezen a nyelven közel azonos, és egymástól csak alapértelmezés szerint az azokhoz való hozzáférést a többi tag, hogy zárva vannak az osztályban, és nyitott a szerkezetet. A szerkezet a C # típusára utal az értékek, míg az osztály - referencia típusú.