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 |
Presenta los tipos de datos de Visual Basic y describe cómo utilizarlos. |
|
Muestra los tipos de datos básicos proporcionados por Visual Basic. |
|
Explica la conversión de tipos, que es el proceso de cambiar un valor de un tipo de datos a otro tipo. |
|
Explica las estructuras, que son tipos definidos por el usuario que se declaran con la palabra clave Structure. |
|
Describe formas de obtener una ejecución más rápida utilizando tipos de datos. |
|
Describe el tipo de datos Object, que se puede utilizar para hacer referencia a los datos de cualquier tipo de datos. |