This documentation is archived and is not being maintained.

Value Types and Reference Types

A data type is a value type if it holds the data within its own memory allocation. A reference type contains a pointer to another memory location that holds the data.

Value types include:

  • All numeric data types
  • Boolean, Char, and Date
  • All structures, even if their members are reference types
  • 1Enumerations, since their underlying type is always Byte, Short, Integer, or Long

Reference types include:

  • String
  • All arrays, even if their elements are value types
  • Class types, such as Form
  • Delegates

You can assign either a reference type or a value type to a variable of the Object data type. An Object variable always holds a pointer to the data, never the data itself. However, if you assign a value type to an Object variable, it behaves as if it holds its own data.

You can find out whether an Object variable is acting as a reference type or a value type by passing it to the IsReference method on the Information class in the Microsoft.VisualBasic namespace. Microsoft.VisualBasic.Information.IsReference returns True if the content of the Object variable represents a reference type.

See Also

Data Types as Classes and Structures | Type Conversions | Structures: Your Own Data Types | Efficient Use of Data Types