Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 22710|Odpoveď: 0

[Zdroj] Rozdiel medzi štruktúrou a triedou v C#

[Kopírovať odkaz]
Zverejnené 24. 6. 2016 11:53:06 | | |
Najzásadnejší rozdiel medzi triedou a štruktúrou je, že trieda je referenčný typ, zatiaľ čo štruktúra je typ hodnoty a ich pridelenie v pamäti je odlišné.

Čo je to trieda?

trieda, základný pojem v objektovo orientovanom programovaní, je typ vlastnej dátovej štruktúry, ktorá typicky obsahuje polia, atribúty, metódy, atribúty, konštruktéry, indexátory, operátory a podobne. V .NET všetky triedy nakoniec zdedia triedu System.Object, takže sú referenčným typom, teda keď novú inštanciu triedy vytvoríte, adresa tejto inštancie v spravovanom halde sa uloží na zásobník a hodnota inštancie sa uloží do spravovanej haldy.

Čo je to štruktúra?

Štruktúra je typ hodnoty používaný na organizáciu množiny súvisiacich premenných do jednej entity premennej. Všetky štruktúry sú zdedené z triedy System.ValueType, takže sú typom hodnoty, t. j. inštancia štruktúry sa vytvorí na zásobníku, kde je vlákno priradené, a samotná hodnota sa uloží. Takže pri použití štruktúry ju môžeme považovať za základnú typovú triedu, ako sú int a char.



1. trieda je typ referencie a štruktúry je typ hodnoty

Keďže trieda je referenčný typ, trieda môže byť nastavená na null. Ale nemôžeme urobiť struct null, pretože je to typ hodnoty.




2. Keď vytvoríte triedu, vytvorí sa na halde. A vytvoríte štruktúru, ktorá sa vytvorí na stacku

3. Používate odkaz na inštanciu triedy. A nepoužívate referenciu na konštrukciu. (namiesto toho ich používajte priamo)

4. Keď triedu odovzdáme ako argument metóde, odovzdáme aj referenciu. Struct prenáša hodnotu, nie referenciu.

5. Štruktúry nemôžu mať inicializátory, triedy môžu mať inicializátory.





6. Triedy môžu mať zjavné konštruktéry bez parametrov, ale štruktúry nie





7. Nové kľúčové slovo musí byť inštanciované pred použitím triedy a Struct ho nepotrebuje




8. Trieda podporuje dedičnosť a polymorfizmus, Struct nie. Poznámka: Ale Struct dokáže implementovať rozhrania rovnako ako triedy

9. Keďže Struct nepodporuje dedičnosť, jeho členovia nemôžu byť modifikovaní chráneným alebo chráneným Internal

10. Konštruktor triedy nemusí inicializovať všetky polia a konštruktér Štruktúry musí inicializovať všetky polia







11. Trieda môže definovať deštruktora, ale Struct nemôže

12. Class je vhodná pre veľké a komplexné dáta a Struct je vhodná pre nové typy, ktoré sa často používajú ako kombinácia niektorých dát.



Relevantné príležitosti: Struct má výkonnostné výhody a Class má objektovo orientované rozšírenia.

Typ použitý pre základné dátové úložisko je navrhnutý ako Struct typ a typ používaný na definovanie správania aplikácie je navrhnutý ako Class. Ak si nie ste istí budúcim využitím tohto typu, mali by ste použiť Class.




Predchádzajúci:Alipay RSA nástroj na generovanie súkromného kľúča a verejného kľúča jedným kliknutím
Budúci:C# zvrátim MySQL pomocnú triedu, ulož ju
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com