Nikdo nikdy neříkal, že se struktury již nepoužívají. Ono obecně se nepoužívají tak často, ale určité důvody pro to jsou. Rozdíl je v tom, že struktury jsou typ hodnotový, kdežto instance třídy jsou referenční. Samozřejmě objekty toho umí víc, například dědičnost. Význam struktur a to, proč tam vlastně jsou, je kvůli výkonu. Pokud budu nějak chtít reprezentovat bod (což jsou dva integery nebo floaty nebo něco takového), tak tato struktura zabere třeba 8 bajtů. Protože je to hodnotový typ, není s ní žádná další režie, je prostě buď na zásobníku, nebo přímo v datové oblasti objektu na haldě. Pokud máte třídu, tak jenom kvůli tomu, abyste vytvořil instanci třídy, ej potřeba kromě samotných dat objektu i 8 bajtů režijních informací + ještě pár bajtů pro Garbage Collector a správce heapu. Struktury tuto režii nenesou, samozřejmě zase je pomalejší, pokud s nimi děláte nějaké složité operace, hodně je přiřazujete atd., to se pak kopírují bloky paměti místo jednoduchých referencí. Zkrátka když něco obsahuje jednu nebo dvě proměnné a nemá to nějakou složitější logiku, pak se z důvodu výkonu udělá raději struktura. Jinak je velmi dobré udělat si v tom jasno. Pokud píšete běžné aplikace a ne nějaké výkonově náročné věci, pak používejte třídy. V jistých případech se ale struktury hodí.
|