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
,Char
aDate
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
, , neboUInteger
ULong
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, Decimal
napří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.