Sdílet prostřednictvím


Typy hodnot a odkazové typy

V jazyce Visual Basic existují dva typy typů: odkazové typy a typy hodnot. Proměnné referenčních typů ukládají odkazy na data (objekty), zatímco proměnné typů hodnot přímo obsahují 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 hodnotovým typem pokud obsahuje data v rámci vlastního přidělení paměti. Mezi typy hodnot patří:

  • Všechny číselné datové typy

  • Boolean, Char a Date

  • Všechny struktury, i když jejich členy jsou odkazové 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 a Integer, 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 také použít klíčové slovo New. 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 svá data. Mezi odkazové typy patří:

  • String

  • Všechna pole, i kdyby jejich prvky byly hodnotové typy

  • 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:

  • Jmenné prostory

  • Moduly

  • Události

  • 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é hodnotový typ Object, chová se jako by obsahovala vlastní data. Další informace najdete v tématu Datový typ objektu.

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

Viz také