C # 4 háló

Nemrég nagyon gyakori programozók egy része nem csak a szokásos „program” az élet szerkezete (struct), de nem tud semmit erről a témáról. És gyakran csak akkor ő „program” az élet mindig osztályokat (class). Ebben a cikkben szeretnék ismét összpontosítani a különbség struktúrák és osztályok.







Mi strusture?

A lényeg a cikk. Minél többet használja a struktúra helyett egy kis (talán helyesebb azt mondani, - kicsi) osztályok, az olcsóbb használt memória lesz forrás. Azt feltételezi, hogy nem igényel magyarázatot, hogy miért ... „csomó”, „szemétgyűjtő”, „bizonytalan időközönként átjáró”, bonyolítja a „kézi” vezérlés halomból és szemétgyűjtő. Minden kulcsfontosságú ponton már felsorolt.

Csakúgy, mint osztályok, struktúrákat lehet mezők, módszerek és konstruktőrök. Míg pro tervezők kell beszélni több (lesz a következő témában), mert ez egy nagyon fontos fogalom összehasonlításakor osztályok és struktúrák.

Szerkezet VAMIN mindig szeretem azt hinni, hogy az alábbi információk az Ön számára, mint a meglepetés. C #, primitív numerikus típusok int. hosszú. float egy alias a System.Int32 szerkezetét. System.Int64 és System.Single volt. Ezek a szerkezetek mezők és módszerek. Általában hívja módszerek az adattípusok változó. Például, minden egyes ilyen struktúrák van toString eljárás. Továbbá, ezek a struktúrák statikus területen, például, vagy Int32.MaxValue Int32.MinValue. Kiderült, hogy már használja a szerkezetet, és így ismerik azokat a mindennapi „program” az élet.

Táblázat osztályok és struktúrák Microsoft. NET Framework

A táblázat mutatja az álnevek és a megfelelő típusú, valamint információt nyújt a képviselő típusát (struct vagy osztály).

Ellentétben osztályok, az állami területek a szerkezetek a legtöbb esetben ez nem ajánlott, mert nincs módja annak ellenőrzésére értékek bennük. Például bárki az értéket a percek és másodpercek alatt 60. Több helyes megoldás ebben az esetben - használja az ingatlant, és hogy ellenőrizze a kivitelező:

By the way, ... alapértelmezés szerint nem tudja használni néhány általános nyilatkozatok a struktúrákat. Például nem tudja használni az összehasonlító operátor (==), és vele szemben (! =) A struktúrákat. Azonban, akkor kifejezetten kijelentik és végrehajtása üzemeltetők struktúrákat.

És mi a különbség a struktúrák és osztályok

Nézzünk egy példát, amelyben a hiba már megállapított:

Az ok, hiba történik, hogy nem tudja használni az alapértelmezett konstruktor (paraméter nélkül) az a szerkezet, mert a fordító mindig generál maga. Ami az osztály, a fordító létrehoz egy alapértelmezett konstruktor csak akkor, ha nem jön létre. A generált konstruktor a szerkezet mindig meghatározza a mezőt 0. hamis vagy null - mint osztályok. Így biztos lehet benne, hogy a gazdálkodó egységnek mindig viselkednek „megfelelően” összhangban az alapértelmezett értékek a használt típusait. Ha nem kívánja használni az alapértelmezett értékeket, akkor inicializálja a mezők értéküket a kivitelező a paraméterek inicializálása. Azonban, ha ez kivitelező nem inicializálja semmilyen értéket, a fordító inicializálja az Ön számára, és megjelenik egy hibaüzenet.







Az első szabály struktúrákat. Mindig, minden inicializálni kell!

Ez a táblázat egyfajta összegzi az összes fenti, és megmutatja a főbb különbségek osztályok és struktúrák.

Használata szerkezetek, mint a változók

Miután létrehozott egy szerkezetet, akkor tudja használni, valamint osztályok és egyéb típusok. Például, ami egy idő szerkezetében. Tudom használni az osztályban:

Hozhat létre nullképes változata egy változó típusú szerkezet módosító használunk, majd rendeljen értéket null „?”:

Idő? CURRENTTIME = null;

inicializálás szerkezetek

Ebben a cikkben, már többször mondta, hogy a szerkezet a területen lehet inicializálni a kivitelező, és nem számít, mit jelent a „saját” vagy „default”. A különlegessége a szerkezetek magukba azt a tényt is, hogy annak a ténynek köszönhető, hogy a struktúrák fontos típus, lehetséges, hogy hozzon létre egy olyan struktúra használata nélkül kivitelező, például:

Ebben az esetben a változó jön létre, de a mezők inicializált paraméterek szerint a kivitelező.

következtetés

IMHO, a fő különbség a struktúrák és osztályok: struktúrák érték szerint adódnak át (azaz másolt), osztályú objektumok - itt. Ez a jelentős különbség a viselkedésüket, és nem ott, ahol azokat tárolják.
Megjegyzés: A szerkezet is átadhatók referenciaként használva módosítók, és ref.

Véleményem gáncsoskodó, a stílus béna. Sok analfabéta javaslatokat. Például:
> A sajátosságai a struktúrák közé tartoznak továbbá az a tény, hogy annak a ténynek köszönhető, hogy a struktúrák fontos típusú, majd hozzon létre egy struktúrát használata nélkül kivitelező, például:
Még létrehozni egy olyan struktúra lehet, vagy nem lehet? Milyen szó hiányzik? Ezt nevezik, hisz magában.

Ui Kívánom, hogy írjon új cikkek megközelíteni alaposabban, elgondolkodva.

By the way, itt van még egy globális hiba: a cikk címe kezdődik a .NET 4.0, és a leírás végzik kizárólag C #. Calabonga, minden tiszteletem az öné, azt nem teheti meg, hogy felmondja ezt az anyagot. Az MC ++ (C ++. NET) osztályokat is lehet nyilvánítani a verem. Úgy vélem, hogy ez a példa is elég.

>> A táblázat az álnevek és az azoknak megfelelő típusok
Életét a helyszínen - ez a „alias”. A Can "alias"? Miért telezsúfol a magyar nyelv, ha van egy „natív” kifejezés.

„Hozhat létre nullképes verzió.”

Dumka blogger. „Mi lehet üres? Uh. Ahogy az orosz (karcolás fehérrépa). A farkam vele, és írd nulyabl”. (Rzhot izzadság acél). Változata a cikk már régóta esedékes obnulyablit :))

Köszönöm a cikket, ez segített megérteni.

Itt említette Richter - itt az agyam és zamorochil, bár általában könyvében megfizethetetlen.

A Common Language Runtime (CLR) mindig lehetővé teszi, hogy az értékteremtés típusú esetek, és ott
nincs módja, hogy megakadályozzák az érték típusú futtatását. Emiatt típusú érték valójában nem is kell, hogy a kivitelező meghatározott bennük, és a C # fordító nem bocsát ki az alapértelmezett
paraméter nélküli konstruktorokat érték típusok.

Értem rendesen, hogy azt mondja: „a C # nem hoz létre az alapértelmezett konstruktor.”

És ítélve a cikket, és csak az általános szerkezet viselkednek - alapértelmezés szerint az azonos p létre.

Én vagyok a során Richter nem érti?

Szintén a kérdést a Richter-skála:
létrehozásában szerkezetek például kulcsszó új, ahol lesz, a halom, vagy a verem. A könyv íródott, ez mindig a verem, és ITVDN azt mondta, hogy ebben az esetben a kupac.

ASP.NET MVC: Hogyan PagedList AJAX?

Hogyan készítsünk egy Prism (MEF) az Silverlight alkalmazást