Sdílet prostřednictvím


Struktury a třídy (Visual Basic)

Visual Basicsjednocuje syntaxe struktury a tříd s výsledkem, že obě entity podporují většinu stejných funkcí.Existují však také důležité rozdíly mezi strukturami a tříd.

Výhodou je referenční typy jsou třídy – předání odkaz je efektivnější než předáním strukturu proměnné s jeho data.Na druhé straně struktury nevyžadují přidělení paměti na globální haldy.

Protože nemohou dědit strukturu, struktury by měla sloužit pouze pro objekty, které nemusí být prodloužena.Pomocí struktury objektu, který chcete vytvořit instanci malé velikosti a brát v úvahu charakteristiky tříd versus struktur.

Podobnost

Struktury a třídy jsou podobné v následujících ohledech:

  • Obě jsou kontejner typy, což znamená, že obsahují další typy jako členové.

  • Obě mají členy, které mohou obsahovat konstruktory, metody, vlastnosti, polí, konstanty, výčty, události a obslužné rutiny událostí.Nezaměňujte však tyto členy deklarované prvky struktury.

  • Členové obou lze individualizaci úrovně přístupu.Například lze prohlásit za jeden člen Public a jiné Private.

  • Obojí lze implementovat rozhraní.

  • Obojí lze sdílet konstruktory, s nebo bez parametrů.

  • Obojí lze vystavit výchozí vlastnost, za předpokladu, že vlastnost trvá nejméně jeden parametr.

  • Obě deklarovat a zvýšení událostí a deklarovat i delegátů.

Rozdíly

Struktury a tříd se liší v následující údaje:

  • Struktury jsou hodnoty typů; třídy jsou referenční typy.Proměnné typu struktura obsahuje data struktury, spíše než obsahující odkaz na data jako typ třídy.

  • Struktur pomocí zásobníku přidělení; třídy použijte přidělení haldy.

  • Všechny prvky konstrukce jsou Public ve výchozím nastavení. Třída proměnné a konstanty jsou Private ve výchozím nastavení jsou ostatní členové třídy Public ve výchozím nastavení.Toto chování pro členy třídy poskytuje kompatibilitu s výchozí hodnoty systému Visual Basic 6.0.

  • Struktura musí mít alespoň jeden sdíleném proměnné nebo sdíleném, noncustom prvek událostí; Třída může být zcela prázdné.

  • Prvky struktury nelze deklarovat jako Protected; mohou členové třídy.

  • Postup struktury lze zpracovávat události, pouze pokud je Shared (Visual Basic)Sub postup a pouze AddHandler – příkaz; všechny procedury třídy lze zpracovávat události, buď pomocí Handles – Klauzule (Visual Basic) klíčové slovo nebo AddHandler prohlášení.Další informace naleznete v tématu Události (Visual Basic).

  • Struktura deklarace proměnných nelze určit Inicializátory nebo počáteční velikost pro pole; Třída deklarace proměnných lze.

  • Struktury implicitně dědí ValueType třída a nemůže dědit od typu; třídy mohou dědit z třídy nebo tříd než ValueType.

  • Konstrukce nejsou dědičné; třídy jsou.

  • Struktury nikdy ukončeno, takže nikdy volá společného jazykového modulu runtime (CLR) Finalize metodu na žádnou strukturu; třídy jsou ukončena kolekcí odpadků (GC), které vyvolá Finalize na třídě, jakmile zjistí, že nejsou žádné aktivní odkazy zbývající.

  • Konstrukce nevyžaduje konstruktor; Třída nepodporuje.

  • Můžete mít struktur sdíleném konstruktory pouze v případě, že přijmou parametry; třídy mohou uživatelé s nebo bez parametrů.

Každá struktura má implicitní veřejný konstruktor bez parametrů.Tento konstruktor inicializuje všechny struktury datové prvky na výchozí hodnoty.Nelze předefinovat toto chování.

Proměnné instance a

Struktury jsou typy hodnot, každá proměnná struktura trvale vázáno na strukturu jednotlivých instancí.Ale třídy jsou typy odkazů a objektové proměnné mohou odkazovat na různé instance třídy v různých časech.Tento rozdíl se týká používání struktur a třídy následujícími způsoby:

  • Inicializace. Struktura proměnná implicitně zahrnuje inicializaci prvky pomocí struktury konstruktor bez parametrů.Proto Dim s As struct1 je ekvivalentní Dim s As struct1 = New struct1().

  • Přiřazení proměnné. Při přiřadit jednu proměnnou struktury na jiný nebo předat argument postup struktury instance aktuální hodnoty proměnné prvky jsou zkopírovány na novou strukturu.Přiřadit jednu proměnnou objektu na jiný nebo předat objektové proměnné postup, je zkopírován pouze ukazatel.

  • Nic přiřazení. Můžete přiřadit hodnotu Nothing (Visual Basic) na strukturu proměnné, ale instance pokračuje být přiřazena proměnné.Stále můžete volat jeho metody a přístup k jeho datové prvky, ačkoli jsou přiřazení inicializace proměnných prvků.

    Naopak nastavena proměnná objektu Nothing, můžete oddělit od instance libovolné třídy a všech členů nelze přistupovat prostřednictvím proměnné dokud přiřadit jinou instanci.

  • Více instancí. Proměnná objektu může mít různé třídy instance přiřazené v různých časech a několik proměnných objektu můžete odkazovat na stejnou instanci třídy současně.Provedené změny hodnoty členů třídy vliv těchto členů při přístupu přes jiné proměnné odkazující na stejnou instanci.

    Struktura prvky však jsou izolovány v rámci své vlastní instance.Změny hodnoty se neprojeví v žádné jiné strukturu proměnné i v ostatních instancí stejného Structure prohlášení.

  • Rovnost. Testování rovnost dvou struktur musí být provedena s testu element po elementu.Dvě proměnné objektu lze porovnat pomocí Equals metoda.Equalsoznačuje, zda dvě proměnné přejděte do stejné instance.

Viz také

Úkoly

Řešení potíží s datovými typy (Visual Basic)

Koncepty

Datové typy v jazyce Visual Basic

Složené datové typy (Visual Basic)

Typy hodnot a typy odkazu

Struktury a ostatní programovací elementy (Visual Basic)

Další zdroje

Struktury (Visual Basic)

Objekty a třídy v jazyce Visual Basic