Compartir a través de


Tipos de valor y tipos de referencia

Hay dos tipos de tipos en Visual Basic: tipos de referencia y tipos de valor. Las variables de tipos de referencia almacenan referencias a sus datos (objetos), mientras que las variables de tipos de valor contienen directamente sus 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 de una variable afecten a la otra (excepto en el caso del modificador ByRef en los 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 de valor incluyen lo siguiente:

  • Todos los tipos de datos numéricos

  • Boolean, Char y Date

  • Todas las estructuras, incluso si sus miembros son tipos de referencia

  • Enumeraciones, ya que su tipo subyacente es siempre SByte, , ShortIntegerLongByte, UShort, o UIntegerULong

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 y Integer .

Puede declarar un tipo de valor mediante la palabra clave reserved, por ejemplo, Decimal. También puede usar la New palabra clave para inicializar un tipo de valor. Esto resulta especialmente útil si el tipo tiene un constructor que toma parámetros. Un ejemplo de esto es el Decimal(Int32, Int32, Int32, Boolean, Byte) constructor, que crea un nuevo Decimal valor a partir de los elementos proporcionados.

Tipos de referencia

Un tipo de referencia almacena una referencia a sus datos. Los tipos de referencia incluyen lo siguiente:

  • 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 inicializarlo. 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 califican como tipos, ya que no se puede especificar ninguno de ellos como un tipo de datos para un elemento declarado:

  • Espacios de nombres

  • Módulos

  • Eventos

  • Propiedades y procedimientos

  • Variables, constantes y campos

Trabajar con el tipo de datos de objeto

Puede asignar un tipo de referencia o un tipo de valor a una variable del Object tipo de datos. Una Object variable siempre contiene una referencia a los datos, nunca los datos en sí. Sin embargo, si asigna un tipo de valor a una Object variable, se comporta como si contiene sus propios datos. Para obtener más información, vea Tipo de datos de objeto.

Para averiguar si una Object variable actúa como un tipo de referencia o un tipo de valor, puede pasarla al método IsReference en la clase Information del espacio de nombres Microsoft.VisualBasic. Information.IsReference devuelve True si el contenido de la Object variable representa un tipo de referencia.

Consulte también