Share via


Implementación de tipos de datos (Visual Basic)

Las estructuras y clases del espacio de nombres System admiten los tipos de datos básicos de Visual Basic. El compilador utiliza la palabra clave de cada tipo de datos como alias para la clase o estructura subyacente. Por ejemplo, declarar una variable con la palabra reservada Byte es igual que declararla con el nombre completo de estructura System.Byte.

En Visual Basic, los tipos de datos se implementan de acuerdo con su clasificación. Los tipos de datos de Visual Basic se pueden clasificar en función de si una variable de un tipo específico almacena sus propios datos o un puntero a los datos. Si almacena sus propios datos, se trata de un tipo de valor; si contiene un puntero a los datos guardados en cualquier otro lugar de la memoria, es un tipo de referencia.

Tipos de valor

Un tipo de datos es un tipo de valores si almacena los datos en 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

  • Las enumeraciones, ya que su tipo subyacente es siempre SByte, Short, Integer, Long, Byte, UShort, UInteger o ULong

Cada estructura es un tipo de valor, aunque tenga miembros de tipo de referencia. Por este motivo, los tipos de valor como Char e Integer son implementados por estructuras de .NET Framework.

Se puede declarar un tipo de valor utilizando la palabra clave reservada, por ejemplo, Decimal. También puede utilizar 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 genera un nuevo valor Decimal de las partes proporcionadas.

Tipos de referencia

Un tipo de referencia contiene un puntero a otra ubicación de memoria que almacena los datos. Los tipos de referencia incluyen lo siguiente:

  • String

  • Todas las matrices, incluso si sus elementos son tipos de valor

  • Los tipos de clase, como Form

  • Delegados

Una clase es un tipo de referencia. Por este motivo, los tipos de referencia como Object y String son admitidos por clases de .NET Framework. Observe que cada matriz es un tipo de referencia, aunque sus miembros sean tipos de valor.

Como un tipo de referencia representa una clase subyacente de .NET Framework, es preciso usar la palabra clave New (Operador, Visual Basic) al inicializarlo. La instrucción siguiente inicializa una matriz.

Dim totals() As Single = New Single(8) {}

Tipos adicionales que están disponibles en .NET Framework

Common Language Runtime (CLR) también admite estructuras y clases que Visual Basic no proporciona. Por ejemplo, la estructura System.Guid proporciona un identificador único global (GUID) y la clase System.TimeZone admite una zona horaria. Puede utilizar estos tipos para declarar variables y constantes y puede tener acceso a los métodos que .NET Framework implementa en estos tipos. Sin embargo, Visual Basic no admite operaciones o conversiones de tipo que impliquen a tipos que no proporciona la aplicación.

Elementos que no son tipos

Los elementos de programación siguientes no se califican como tipos porque no es posible especificar ninguno de ellos como 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 Object

Puede asignar indistintamente un tipo de referencia o un tipo de valores a una variable del tipo de datos Object. Una variable Object siempre contiene un puntero a los datos, nunca los propios datos. Sin embargo, si se asigna un tipo de valor a una variable Object, ésta se comporta como si contuviera sus propios datos. Para obtener más información, vea Object (Tipo de datos).

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

Los tipos de datos tienen Miembros

Como los tipos de datos de Visual Basic tienen miembros, los admiten las estructuras y clases de .NET Framework. Estos miembros incluyen constructores, métodos, propiedades y campos. Puede obtener acceso a los miembros (excepto los constructores) de una variable del mismo modo que a los métodos y propiedades de un objeto.

El ejemplo siguiente utiliza las propiedades Year, Month y Day, y el método DaysInMonth de la estructura System.DateTime para determinar cuántos días quedan en el mes actual.

Dim current As Date = Now
Dim daysRemaining As Integer
daysRemaining = Date.DaysInMonth(current.Year, current.Month) - current.Day

Conviene señalar que se debe calificar una referencia a un miembro de tipo de datos, bien con el nombre del tipo (Date) o bien con el nombre de una variable declarada de dicho tipo (current).

Ejemplos de miembros de tipos de datos

Los siguientes prototipos de código ilustran algunos métodos, propiedades y campos útiles con los tipos de datos.

<Char>.IsDigit() ' Returns True if character is a numeric digit.

<Char>.IsLower() ' Returns True if character is a lowercase letter.

<Date>.IsLeapYear() ' Returns True if current year is a leap year.

<Date>.ToUniversalTime() ' Returns local date/time converted to UTC.

<Double>.IsInfinity() ' Returns True if contents represent infinity.

<Double>.IsNaN() ' Returns True if contents are not a number (0/0).

<Long>.MaxValue ' Constant representing largest positive Int64 value.

<Object>.GetType() ' Returns Type object representing type of <Object>.

<Object>.GetType().GetTypeCode() ' Returns type code of <Object>.

<String>.Chars(<index>) ' Character at position <index> of <String>.

<String>.Length ' Number of characters currently in <String>.

Todos los tipos numéricos, incluidos Byte y Char, exponen los campos públicos MaxValue y MinValue que pueden ser muy útiles al trabajar con estos tipos.

La equivalencia de miembros de tipos de datos no está asegurada

.NET Framework proporciona también varios métodos para los tipos de datos que podrían resultar equivalentes a funciones y palabras clave de Visual Basic. Sin embargo, Visual Basic no siempre utiliza los métodos de .NET Framework para realizar la conversión u otras operaciones y los resultados no siempre son idénticos.

Por ejemplo, el método ToSingle realiza el mismo tipo de acción que hace la palabra clave CSng en una expresión Decimal. Pero no se garantiza que CSng utilice System.tipoDeDatos.ToSingle y, por consiguiente, no se garantiza que los resultados sean los mismos en condiciones marginales o límite.

En general, debe utilizar los elementos de programación de Visual Basic porque son más sencillos de usar y facilitan la lectura del código. En algunos casos, podría ser necesario que un método .NET Framework aporte funcionalidad adicional. Para obtener un ejemplo, vea "Operador Mod no devuelve un resultado preciso" en Solucionar problemas de tipos de datos (Visual Basic).

Secciones relacionadas

Término

Definición

Tipos de datos en Visual Basic

Presenta los tipos de datos de Visual Basic y describe cómo utilizarlos.

Resumen de tipos de datos (Visual Basic)

Muestra los tipos de datos básicos proporcionados por Visual Basic.

Conversiones de tipos en Visual Basic

Explica la conversión de tipos, que es el proceso de cambiar un valor de un tipo de datos a otro tipo.

Estructuras (Visual Basic)

Explica las estructuras, que son tipos definidos por el usuario que se declaran con la palabra clave Structure.

Uso eficiente de tipos de datos (Visual Basic)

Describe formas de obtener una ejecución más rápida utilizando tipos de datos.

Object (Tipo de datos)

Describe el tipo de datos Object, que se puede utilizar para hacer referencia a los datos de cualquier tipo de datos.

Referencia

Boolean

Byte

Char

DateTime

Decimal

Double

Guid

TimeZone