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. |