Tipos de valor y tipos de referencia
Hay dos clases de tipos en Visual Basic: tipos de referencia y tipos de valor. Las variables de tipos de referencia almacenan referencias en sus datos (objetos), mientras que las variables de tipos de valor contienen directamente los datos. Con los tipos de referencia, dos variables pueden hacer referencia al mismo objeto y, por lo tanto, las operaciones en una variable pueden afectar al objeto al que hace referencia la otra variable. Con los tipos de valor, cada variable tiene su propia copia de los datos, y no es posible que las operaciones en una variable afecten a la otra (excepto en el caso del modificador ByRef en parámetros).
Tipos de valor
Un tipo de datos es un tipo de valor si contiene los datos dentro de su propia asignación de memoria. Los tipos válidos incluyen los siguientes:
Todos los tipos de datos numéricos
Boolean
,Char
yDate
Todas las estructuras, incluso si sus miembros son tipos de referencia
Enumeraciones, ya que su tipo subyacente es siempre
SByte
,Short
,Integer
,Long
,Byte
,UShort
,UInteger
oULong
Cada estructura es un tipo de valor, incluso si contiene miembros de tipo de referencia. Por este motivo, las estructuras de .NET Framework implementan tipos de valor como Char
e Integer
.
Puede declarar un tipo de valor mediante la palabra clave reservada, por ejemplo, Decimal
. También puede usar la palabra clave New
para inicializar un tipo de valor. Esto es especialmente útil si el tipo tiene un constructor que toma parámetros. Un ejemplo de esto es el constructor Decimal(Int32, Int32, Int32, Boolean, Byte), que compila un nuevo valor Decimal
a partir de los elementos proporcionados.
Tipos de referencia
Un tipo de referencia almacena una referencia a sus datos. Los tipos de referencia incluyen los siguientes:
String
Todas las matrices, incluso si sus elementos son tipos de valor
Tipos de clase, como Form
Delegados
Una clase es un tipo de referencia. Tenga en cuenta que cada matriz es un tipo de referencia, incluso si sus miembros son tipos de valor.
Dado que cada tipo de referencia representa una clase de .NET Framework subyacente, debe usar la palabra clave New Operator al inicializarla. La siguiente instrucción inicializa una matriz.
Dim totals() As Single = New Single(8) {}
Elementos que no son tipos
Los siguientes elementos de programación no se consideran tipos, ya que no se puede especificar ninguno de ellos como un tipo de datos de un elemento declarado:
Espacios de nombres
Módulos
Events
Propiedades y procedimientos
Variables, constantes y campos
Trabajo con el tipo de datos Object
Puede asignar un tipo de referencia o un tipo de valor a una variable del tipo de datos Object
. Una variable Object
siempre contiene una referencia a los datos, nunca los datos en sí. Pero si asigna un tipo de valor a una variable Object
, se comporta como si contuviera sus propios datos. Para obtener más información, vea Object Data Type.
Puede averiguar si una variable Object
actúa como un tipo de referencia o un tipo de valor si la pasa al método IsReference de la clase Information del espacio de nombres Microsoft.VisualBasic. Information.IsReference devuelve True
si el contenido de la variable Object
representa un tipo de referencia.