Typy hodnot a typy odkazu

V jazyce Visual Basic existují dva typy typů: odkazové typy a typy hodnot. Proměnné typů odkazu ukládají odkazy na data (objekty), zatímco proměnné typů hodnoty data přímo obsahují příslušná data. V případě typů odkazu mohou dvě proměnné odkazovat na stejný objekt. Operace v rámci jedné proměnné tedy mohou ovlivňovat objekt odkazovaný jinou proměnnou. U hodnotových typů má každá proměnná vlastní kopii dat a není možné, aby operace s jednou proměnnou ovlivnily druhou (s výjimkou případu modifikátoru ByRef u parametrů).

Typy hodnot

Datový typ je typ hodnoty, pokud obsahuje data v rámci vlastního přidělení paměti. Mezi typy hodnot patří:

  • Všechny číselné datové typy

  • Boolean, Chara Date

  • Všechny struktury, i když jsou jejich členy odkazovými typy

  • Výčty, protože jejich základní typ je vždy SByte, Short, , Integer, Long, Byte, , UShort, , nebo UIntegerULong

Každá struktura je typ hodnoty, i když obsahuje členy referenčního typu. Z tohoto důvodu jsou typy hodnot, jako Char jsou a Integer jsou implementovány strukturami rozhraní .NET Framework.

Typ hodnoty můžete deklarovat pomocí vyhrazeného klíčového slova, Decimalnapříklad . K inicializaci typu hodnoty můžete použít New také klíčové slovo. To je zvlášť užitečné, pokud typ má konstruktor, který přebírá parametry. Příkladem je Decimal(Int32, Int32, Int32, Boolean, Byte) konstruktor, který vytvoří novou Decimal hodnotu ze zadaných částí.

Typy odkazů

Typ odkazu ukládá odkaz na jeho data. Mezi odkazové typy patří:

  • String

  • Všechna pole, i když jsou jejich prvky typy hodnot

  • Typy tříd, například Form

  • Delegáti

Třída je referenční typ. Všimněte si, že každé pole je referenčním typem, i když jsou jeho členy typy hodnot.

Vzhledem k tomu, že každý typ odkazu představuje základní třídu rozhraní .NET Framework, musíte při inicializaci použít klíčové slovo New Operator . Následující příkaz inicializuje pole.

Dim totals() As Single = New Single(8) {}  

Prvky, které nejsou typy

Následující programovací prvky nemají nárok na typy, protože pro deklarovaný prvek není možné zadat žádný z nich jako datový typ:

  • Obory názvů

  • Moduly

  • Událost

  • Vlastnosti a postupy

  • Proměnné, konstanty a pole

Práce s datovým typem objektu

K proměnné datového Object typu můžete přiřadit buď odkazový typ, nebo typ hodnoty. Proměnná Object vždy obsahuje odkaz na data, nikdy samotná data. Pokud ale přiřadíte k proměnné typ Object hodnoty, chová se jako by obsahovat vlastní data. Další informace najdete v tématu Datový typ objektu.

Zjistit, zda proměnná funguje jako typ odkazu nebo typ hodnoty, můžete zjistit tak, že Object ji IsReference předáte metodě ve Information třídě Microsoft.VisualBasic oboru názvů. Information.IsReference vrátí True , pokud obsah Object proměnné představuje odkazový typ.

Viz také