Štruktúry sú podobné triedam, no majú pár malých rozdielov. V tomto diely sa na ne pozrieme.
Na prvý pohľad sa štruktúry nelíšia od tried. Do C# sa dostali z jazyka C++ a do neho zas z jazyka C. Bol to prvý krok k objektovo orientovanému programovaniu a nahradili ich triedy. Je tu však pár rozdielov, ktoré je možné využiť.
Ako vytvoriť štruktúru
Tvorba štruktúry je veľmi podobná tvorbe triedy
public struct Struktura { int Cislo; string Text; public Struktura() { Cislo = 0; } public void Funkcia() { } }
public class Trieda { int Cislo; string Text; public Trieda() { } public void Funkcia() { } }
Hlavný rozdiel, ktorý si všimnete je to, že štruktúra sa narozdieľ od triedy označuje slovom struct. Ako druhý je konštruktor – v triede nemusí obsahovať inicializáciu premennej, tá je schopná im dať základnú hodnotu sama. V štruktúre je to však nevyhnutné. V ostatnom je kód štruktúra a triedy úplne rovnaký.
V čom sa líši štruktúra a trieda?
Hlavná odlišnosť je v funkčnosti. Minule sme si povedali, že keď predávate objekt triedy, predávate len jeho referenciu, pri premenných to bola hodnota. Pri štruktúre, napriek tomu že je podobná triede, predávate tiež len hodnotu. Toto sa dá v istých situáciách využiť. Ďalšou výhodou štruktúry je, že narozdieľ od tried sa ukladá do Zásobníka [Stack] a nie do pamäte RAM [heap]. Zásobník je od pamäti rýchlejší, ale zmestí sa do neho menej. Do zásobníka sú ukladané aj základné dátové typy a kód programu.
Riziko rekurzie metód (Problémy zásobníka)
Keď som v diely o metódach písal o tom, že nekonečná rekurzia spôsoby chybu, nenapísal som čím je spôsobená. Je to práve tým, že na zásobník sa ukladajú aj práve bežiace funkcie, tým že sa tam ukladajú do nekonečna, sa veľmi rýchlo preplní a vznikne chyba stack overfllow čiže pretečenie zásobníka.
Jedna malá odlišnosť
Je tu jedna malá odlišnosť, ktorú majú štruktúry oproti triedam, a to že je v nich možné priamo definovať poradie v akom budú údaje usporiadané, ale to je už nad rámec tohto návodu.
Tak dnes sme si povedali niečo o štruktúrach a nabudúce sa pozrieme na vlastnosti, čo bude opäť kratší diel.