Tipos de datos de Visual Basic

En la tabla siguiente se muestran los tipos de datos de Visual Basic .NET, los tipos compatibles con Common Language Runtime, su asignación de almacenamiento nominal y sus intervalos de valores.

Tipo de Visual Basic Estructura de tipo Common Language Runtime Asignación de almacenamiento nominal Intervalo de valores
Boolean Boolean En función de la plataforma de implementación True o False
Byte Byte 1 byte 0 a 255 (sin signo)
Char (carácter individual) Char 2 bytes 0 a 65535 (sin signo)
Date DateTime 8 bytes 0:00:00 (medianoche) del 1 de enero de 0001 a 11:59:59 p.m. del 31 de diciembre de 9999.
Decimal Decimal 16 bytes 0 a +/-79.228.162.514.264.337.593.543.950.335 (+/-7,9… E+28)  sin separador decimal; 0 a +/-7,9228162514264337593543950335 con 28 posiciones a la derecha del decimal;el número distinto de cero más pequeño es +/-0,0000000000000000000000000001 (+/-1E-28) 
Double (punto flotante de precisión doble) Double 8 bytes -1,79769313486231570E+308 a -4,94065645841246544E-324  para los valores negativos;4,94065645841246544E-324 a 1,79769313486231570E+308  para los valores positivos
Integer Int32 4 bytes -2.147.483.648 a 2.147.483.647 (con signo)
Long (entero largo) Int64 8 bytes -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807 (9,2…E+18 ) (con signo)
Object Object (clase) 4 bytes en plataforma de 32 bits8 bytes en plataforma de 64 bits Cualquier tipo puede almacenarse en una variable de tipo Object
SByte SByte 1 byte -128 a 127 (con signo)
Short (entero corto) Int16 2 bytes -32.768 a 32.767 (con signo)
Single (punto flotante de precisión simple) Single 4 bytes -3,4028235E+38 a -1,401298E-45  para los valores negativos;1,401298E-45 a 3,4028235E+38  para los valores positivos
String (longitud variable) String (clase) En función de la plataforma de implementación 0 a 2.000 millones de caracteres Unicode aprox.
UInteger UInt32 4 bytes 0 a 4.294.967.295 (sin signo)
ULong UInt64 8 bytes 0 a 18.446.744.073.709.551.615 (1,8…E+19 ) (sin signo)
User-Defined(estructura) (hereda de ValueType) En función de la plataforma de implementación Cada miembro de la estructura tiene un intervalo de valores determinado por su tipo de datos y es independiente de los intervalos de valores correspondientes a los demás miembros.
UShort UInt16 2 bytes 0 a 65.535 (sin signo)

BLOOLEAN
Utilice el tipo de datos Boolean para contener valores de dos estados como verdadero/falso, sí/no o activado/desactivado.

El valor predeterminado de Boolean es False.

Conversiones de tipo

Cuando Visual Basic convierte los valores de tipos de datos numéricos en Boolean, 0 pasa a ser False y todos los otros valores, True. Cuando Visual Basic convierte los valores Boolean en tipos numéricos, False pasa a ser 0 y True, -1.

Al convertir entre valores Boolean y tipos de datos numéricos, recuerde que los métodos de conversión de .NET Framework no siempre producen los mismos resultados que las palabras clave de conversión de Visual Basic. Esto se debe a que la conversión de Visual Basic conserva un comportamiento compatible con versiones anteriores. Para obtener más información, vea Solucionar problemas de tipos de datos.

Sugerencias de programación

  • Números negativos. Boolean no es un tipo numérico y no puede representar un valor negativo. En cualquier caso, no debería utilizar Boolean para contener valores numéricos.
  • Caracteres de tipo. Boolean no tiene ningún carácter de tipo de literal o de tipo de identificador.
  • Tipo de Framework. El tipo correspondiente en .NET Framework es la estructura System.Boolean.

Ejemplo

  • En el ejemplo siguiente, runningVB es una variable Boolean que almacena un único parámetro de tipo sí/no.

BYTE
Utilice el tipo de datos Byte para contener datos binarios.

El valor predeterminado de Byte es 0.

Sugerencias de programación

  • Números negativos. Dado que Byte es un tipo sin signo, no puede representar un número negativo. Si utiliza el operador menos () unario en una expresión que produce un resultado del tipo Byte, Visual Basic convierte primero la expresión a Short.
  • Conversiones de formato. Cuando Visual Basic lee o escribe archivos o cuando llama a archivos DLL, métodos y propiedades, puede convertir automáticamente entre los formatos de datos. Los datos binarios almacenados en variables Byte y matrices se conservan durante estas conversiones de formato. No debería utilizar una variable String para datos binarios, ya que su contenido puede dañarse durante la conversión entre los formatos ANSI y Unicode.
  • Ampliación. El tipo de datos Byte se amplía a ShortUShortInteger y UIntegerLongULongDecimalSingle y Double. Esto significa que se puede convertir Byteen cualquiera de estos tipos sin encontrar un error System.OverflowException.
  • Caracteres de tipo. Byte no tiene ningún carácter de tipo de literal o de tipo de identificador.
  • Tipo en Framework. El tipo correspondiente en .NET Framework es la estructura System.Byte.

 

CHAR
Utilice el tipo de datos Char cuando necesite albergar únicamente un carácter individual y no necesite la sobrecarga de String. En algunos casos, puede utilizar Char(), una matriz de elementos Char, para albergar varios caracteres.

El valor predeterminado de Char es el carácter con el punto de código 0.

Caracteres Unicode

Los primeros 128 puntos de código (0–127) Unicode corresponden a las letras y símbolos de un teclado estándar de EE.UU. Estos primeros 128 puntos de código son los mismos que los definidos por el conjunto de caracteres ASCII. Los siguientes 128 puntos de código (128–255) representan caracteres especiales, como letras de alfabetos latinos, acentos, símbolos de moneda y fracciones. Unicode utiliza los puntos de código restantes (256-65535) para albergar una amplia variedad de símbolos, incluidos caracteres de texto de todo el mundo, signos diacríticos y símbolos técnicos y matemáticos.

Puede utilizar métodos como IsDigit y IsPunctuation en una variable Char para determinar su clasificación Unicode.

Conversiones de tipo

Visual Basic no realiza conversiones directas entre el tipo Char y los tipos numéricos. Puede utilizar Asc, AscW (Funciones) para convertir un valor Char a un tipo Integer que represente su punto de código. Puede utilizar Chr, ChrW (Funciones) para convertir un valor Integer a un tipo Char que tenga ese punto de código.

Si el modificador de comprobación de tipos (Option Strict (Instrucción)) está habilitado, debe agregar el carácter de tipo de literal a un literal de cadena de un solo carácter para identificarlo como el tipo de datos Char. Esto se ilustra en el siguiente ejemplo:

Option Strict On

Dim charVar As Char

‘ The following statement attempts to convert a String literal to Char.

‘ Because Option Strict is On, it generates a compiler error.

charVar = “Z”

‘ The following statement succeeds because it specifies a Char literal.

charVar = “Z”C

Sugerencias de programación

  • Números negativos. Char es un tipo sin signo y no puede representar un valor negativo. En cualquier caso, no debería utilizar Char para albergar valores numéricos.
  • Consideraciones de interoperabilidad. Si está interactuando con componentes que no se han escrito para .NET Framework, por ejemplo objetos de automatización u objetos COM, tenga presente que ese tipo de caracteres tienen un ancho de datos distinto (8 bits) en otros entornos. Al pasar un argumento de 8 bits a esos componentes, declárelo como Byte en lugar de Char.
  • Ampliación. El tipo de datos Char se amplía a String. Esto significa que puede convertir Char a String sin que se produzca un error System.OverflowException.
  • Caracteres de tipo. Al anexar el carácter de tipo de literal C a un literal de cadena de un solo carácter, se le impone el tipo de datos CharChar no tiene ningún carácter de tipo de identificador.
  • Tipo de marco de trabajo. El tipo correspondiente en .NET Framework es la estructura System.Char.

 

DATE
Utilice el tipo de datos Date para albergar valores de fecha, valores de tiempo o valores de fecha y hora.

El valor predeterminado de Date es 0:00:00 (medianoche) del 1 de enero de 0001.

Requisitos de formato

Debe incluir un literal Date dentro de los signos de número (# #). Debe especificar el valor de fecha en el formato M/d/yyyy, por ejemplo #5/31/1993#. Este requisito es independiente de la configuración regional y de la configuración de formato de fecha y hora del equipo.

El motivo de esta restricción es que el significado del código nunca debe cambiar en función de la configuración regional en que se ejecuta la aplicación. Suponga que asigna un literal Date de #3/4/1998# para representar 4 de marzo de 1998. En una configuración regional que utilice el formato mm/dd/yyyy, 3/4/1998 se compila como desee. Pero suponga que implementa la aplicación en varios países. En una configuración regional que utilice el formato dd/mm/yyyy, el literal incluido en el código se compilará como Abril 3, 1998. En una configuración local que utilice el formato yyyy/mm/dd, el literal podría no ser válido (Abril 1998, 0003) y generar un error de compilación.

Soluciones

Para convertir un literal de tipo Date al formato de la configuración regional o a un formato personalizado, proporcione el literal a la función Format (Función) especificandoFormatos de fecha y hora predefinidos (Función Format) o Formatos de fecha y hora definidos por el usuario (Función Format). En el siguiente ejemplo se muestra esta operación.

MsgBox(“The formatted date is ” & Format(#5/31/1993#, “dddd, d MMM yyyy”))

Si lo desea, puede utilizar también uno de los constructores sobrecargados de la estructura DateTime para ensamblar un valor de fecha y hora. En el ejemplo siguiente se crea un valor para representar Mayo 31, 1993 a las 12:14 del mediodía.

Dim dateInMay As New System.DateTime(1993, 5, 31, 12, 14, 0)

Formato de hora

Puede especificar el valor de hora con un formato de 12 horas o de 24 horas, por ejemplo #1:15:30 PM# o #13:15:30#. Sin embargo, si no especifica los minutos ni los segundos, debe especificar a.m. o p.m.

Valores predeterminados de fecha y hora

Si no se incluye una fecha en un literal de fecha/hora, Visual Basic establece la parte de fecha del valor en Enero 1, 0001.Si no se incluye una hora en un literal de fecha y hora, Visual Basic establece la parte de hora del valor en el inicio del día, es decir, medianoche (0:00:00).

Conversiones de tipo

Si convierte un valor Date al tipo String, Visual Basic representa la fecha en función del formato corto de fecha especificado por la configuración regional en tiempo de ejecución, y representa la hora de acuerdo con el formato de hora (12 o 24 horas) especificado por la configuración regional en tiempo de ejecución.

Sugerencias de programación

  • Consideraciones de interoperabilidad. Si está interactuando con componentes que no se han escrito para .NET Framework, por ejemplo objetos de automatización u objetos COM, tenga presente que los tipos de fecha y hora definidos en otros entornos no son compatibles con el tipo Date de Visual Basic. Al transferir un argumento de fecha y hora a un componente de este tipo, declárelo como Double en lugar de Date en el nuevo código de Visual Basic, y utilice los métodos de conversión System.DateTime.FromOADate(System.Double) y System.DateTime.ToOADate.
  • Caracteres de tipo. Date no tiene caracteres de tipo de literal ni caracteres de tipo de identificador. Sin embargo, el compilador trata los literales incluidos entre caracteres de signo de número (# #) como Date.
  • Tipo de marco de trabajo. El tipo correspondiente en .NET Framework es la estructura System.DateTime.

Ejemplo

Una variable o constante del tipo de datos Date contiene tanto la fecha como la hora. Esto se ilustra en el siguiente ejemplo:

Dim someDateAndTime As Date = #8/13/2002 12:14 PM#

El tipo de datos Decimal proporciona el número máximo de dígitos significativos para un número. Admite hasta 29 dígitos significativos y puede representar valores que superan 7.9228 x 10^28. Es especialmente cómodo para cálculos, por ejemplo, financieros, que requieren un gran número de dígitos pero no puede tolerar errores del redondeo.

El valor predeterminado de Decimal es 0.

Sugerencias de programación

  • Precisión. Decimal no es un tipo de datos de punto flotante. La estructura Decimal contiene un valor entero binario, junto con un bit de signo y un factor de ajuste de entero que especifica qué parte del valor es una fracción decimal. Debido a esto, los números Decimal tienen una representación más precisa en la memoria que los tipos de punto flotante (Single y Double).
  • Rendimiento. El tipo de datos Decimal es el más lento de todos los tipos numéricos. Debe considerar la importancia de la precisión frente al rendimiento antes de elegir un tipo de datos.
  • Ampliación. El tipo de datos Decimal se amplía a Single o Double. Esto significa que se puede convertir Decimal a cualquiera de estos tipos sin encontrar un errorSystem.OverflowException.
  • Ceros finales. Visual Basic no almacena los ceros finales en un literal Decimal. Sin embargo, una variable Decimal conserva cualquier cero final adquirido de forma computacional. Esto se ilustra en el siguiente ejemplo:
·         Dim d1, d2, d3, d4 As Decimal
·         d1 = 2.375D
·         d2 = 1.625D
·         d3 = d1 + d2
·         d4 = 4.000D
·         MsgBox("d1 = " & CStr(d1) & ", d2 = " & CStr(d2) _
·             & ", d3 = " & CStr(d3) & ", d4 = " & CStr(d4))

El resultado de MsgBox en el ejemplo anterior es el siguiente:

d1 = 2.375, d2 = 1.625, d3 = 4.000, d4 = 4

  • Caracteres de tipo. Al agregar el carácter de tipo de literal D a un literal, el tipo de datos se convierte en un tipo de datos Decimal. Si se agrega el carácter de tipo de identificador @ a cualquier identificador, se convierte su tipo de datos al tipo Decimal.
  • Tipo de Framework. El tipo correspondiente en .NET Framework es la estructura System.Decimal.

Intervalo

Podría necesitar utilizar el carácter de tipo D para asignar un valor grande a una variable o constante Decimal. Esto se ilustra en el siguiente ejemplo:

Dim bigDec1 As Decimal = 9223372036854775807   ' No overflow.
Dim bigDec2 As Decimal = 9223372036854775808   ' Overflow.
Dim bigDec3 As Decimal = 9223372036854775808D  ' No overflow.

El compilador interpreta un literal como Long a menos que le siga un carácter de tipo de literal. La declaración para bigDec1 no genera un desbordamiento porque su valor está dentro del intervalo para Long. Sin embargo, el valor para bigDec2 es demasiado grande para Long, por lo que el compilador genera un error. El carácter de tipo de literal D resuelve el problema para bigDec3 obligando al compilador a que interprete el literal como Decimal.

DOUBLE
El tipo de datos Double proporciona las magnitudes más grandes y más pequeñas posibles para un número.

El valor predeterminado de Double es 0.

Sugerencias de programación

  • Precisión. Cuando trabaje con números de punto flotante, tenga presente que no siempre tienen una representación precisa en memoria. Esto podría provocar unos resultados inesperados en ciertas operaciones, como comparación de valor y el operador Mod. Para obtener más información, vea Solucionar problemas de tipos de datos.
  • Ceros finales. Los tipos de datos de punto flotante no tienen ninguna representación interna de caracteres 0 finales. Por ejemplo, no distinguen entre 4,2000 y 4,2. Por consiguiente, los caracteres 0 finales no aparecen al mostrar o imprimir valores de punto flotante.
  • Caracteres de tipo. Al agregar el carácter de tipo de literal R a un literal, el tipo de datos se convierte en un tipo de datos Double. Si se agrega el carácter de tipo de identificador # a cualquier identificador, se convierte su tipo de datos al tipo Double.
  • Tipo de Framework. El tipo correspondiente en .NET Framework es la estructura System.Double.

 

INTEGER
El tipo de datos Integer proporciona rendimiento óptimo en un procesador de 32 bits. Los demás tipos integrales son más lentos para cargarse y almacenarse de y a la memoria.

El valor predeterminado de Integer es 0.

Sugerencias de programación

  • Consideraciones sobre la interoperabilidad. Si interactúa con componentes no escritos para .NET Framework, por ejemplo, objetos de automatización o COM, recuerde que Integer tiene un ancho de datos diferente (16 bits) en otros entornos. Al pasar un argumento de 16 bits a esos componentes, declárelo en el código de Visual Basic como Short en lugar de Integer.
  • Ampliación. El tipo de datos Integer se amplía a LongDecimalSingle o Double. Esto significa que se puede convertir Integer en cualquiera de estos tipos sin encontrar un error System.OverflowException.
  • Caracteres de tipo Al agregar el carácter de tipo de literal I a un literal, el tipo de datos se convierte al tipo de datos Integer. Si se agrega el carácter de tipo de identificador % a cualquier identificador, se convierte su tipo de datos al tipo Integer.
  • Tipo en Framework. El tipo correspondiente en .NET Framework es la estructura System.Int32.

Intervalo

Si intenta asignar a una variable de un tipo integral un número que esté fuera del intervalo correspondiente a este tipo, se produce un error. Si intenta establecerlo en una fracción, el número se redondea. Esto se muestra en el siguiente ejemplo.

' The valid range of an Integer variable is -2147483648 through +2147483647.
Dim k As Integer
' The following statement causes an error because the value is too large.
k = 2147483648
' The following statement sets k to 6.
k = CInt(5.9)

 

LONG
Utilice el tipo de datos Long para incluir números enteros demasiado grandes para ajustarse en el tipo de datos Integer.

El valor predeterminado de Long es 0.

Sugerencias de programación

  • Consideraciones sobre la interoperabilidad. Si interactúa con componentes no escritos para .NET Framework, por ejemplo, objetos de automatización o COM, recuerde que Long tiene un ancho de datos diferente (32 bits) en otros entornos. Al pasar un argumento de 32 bits a esos componentes, declárelo en el código de Visual Basic como Integer en lugar de Long.

Además, la automatización no admite enteros de 64 bits en Windows 95, Windows 98, Windows ME o Windows 2000. No se puede pasar ningún argumento Long de Visual Basic a un componente de automatización en estas plataformas.

  • Ampliación. El tipo de datos Long se amplía a DecimalSingle o Double. Esto significa que se puede convertir Byte en cualquiera de estos tipos sin encontrar un error System.OverflowException.
  • Caracteres de tipo Al agregar el carácter de tipo de literal L a un literal, el tipo de datos se convierte al tipo de datos Long. Si se agrega el carácter de tipo de identificador & a cualquier identificador, se convierte su tipo de datos al tipo Long.
  • Tipo en Framework. El tipo correspondiente en .NET Framework es la estructura System.Int64.

OBJECT
El tipo de datos Object puede señalar a datos de cualquier tipo de datos, incluso cualquier instancia de objeto que su aplicación reconozca. Utilice Object cuando en tiempo de compilación no conoce a qué tipo de datos puede señalar la variable.

El valor predeterminado de Object es Nothing (una referencia nula).

Tipos de datos

Puede asignar una variable, constante o expresión de cualquier tipo de datos a una variable Object. Para determinar el tipo de datos a los que hace referencia actualmente una variable Object, puede utilizar el método GetTypeCode de la clase System.Type. Esto se ilustra en el siguiente ejemplo:

Dim myObject As Object

‘ Suppose myObject has now had something assigned to it.

Dim datTyp As Integer

datTyp = Type.GetTypeCode(myObject.GetType())

El tipo de datos Object es un tipo de referencia. Sin embargo, Visual Basic trata una variable Object como un tipo de valor cuando hace referencia a datos de un tipo de valor.

Almacenamiento

Independientemente del tipo de datos al que haga referencia, una variable Object no contiene el valor de datos en sí, sino un puntero al valor. Siempre utiliza cuatro bytes en la memoria del sistema, pero sin incluir el almacenamiento para los datos que representan el valor de la variable. Debido al código que el puntero utiliza para buscar los datos, las variables Object que contienen tipos de valor son de acceso un poco más lento que las variables que tienen un tipo explícito.

Sugerencias de programación

  • Consideraciones sobre interoperabilidad. Si trabaja con componentes no escritos para .NET Framework, por ejemplo objetos de automatización o COM, recuerde que los tipos de puntero de otros entornos no son compatibles con el tipo Object de Visual Basic.
  • Rendimiento. Una variable que declara con el tipo Object es bastante flexible para contener una referencia a cualquier objeto. Sin embargo, cuando invoca un método o propiedad en este tipo de variable, se produce siempre el enlace en tiempo de ejecución. Para forzar el enlace en tiempo de compilación y un mejor rendimiento, declare la variable con un nombre de clase específico o conviértala en el tipo de datos específico.

Cuando declara una variable de objeto, intente utilizar un tipo de clase concreto, por ejemplo OperatingSystem, en lugar del tipo Object generalizado. También es preferible utilizar la clase más específica disponible, como TextBox en lugar de Control, así podrá tener acceso a sus propiedades y métodos. Normalmente puede utilizar la lista Clases del Examinador de objetos para buscar nombres de clase disponibles.

  • Ampliación. Todos los tipos de datos y todos los tipos de referencia se amplían al tipo de datos Object. Esto significa que se puede convertir cualquier tipo a Objectsin encontrar un error System.OverflowException.

Sin embargo, si convierte entre tipos de valor y Object, Visual Basic realiza unas operaciones llamadas conversión boxing y conversión unboxing, que ralentizan la ejecución.

  • Caracteres de tipo. Object no tiene ningún carácter de tipo de literal o de tipo de identificador.
  • Tipo de Framework. El tipo correspondiente en .NET Framework es la clase System.Object.

Ejemplo

El ejemplo siguiente ilustra una variable Object que señala a una instancia de objeto.

Dim objDb As Object

Dim myCollection As New Collection()

‘ Suppose myCollection has now been populated.

objDb = myCollection.Item(1)

SBYTE
Utilice el tipo de datos SByte para incluir valores enteros que no precisen el ancho total de datos de Integer ni la mitad del ancho de datos de Short. En algunos casos, Common Language Runtime puede empaquetar las variables SByte de forma que se ahorre consumo de memoria.

El valor predeterminado de SByte es 0.

Sugerencias de programación

  • Compatibilidad con CLS. El tipo de datos SByte no forma parte de Common Language Specification (CLS), por lo que el código compatible con CLS no puede utilizar un componente que lo utiliza.
  • Ampliación. El tipo de datos SByte se amplía a ShortIntegerLongDecimalSingle y Double. Esto significa que se puede convertir SByte en cualquiera de estos tipos sin encontrar un error System.OverflowException.
  • Caracteres de tipo. SByte no tiene ningún carácter de tipo de literal o de tipo de identificador.
  • Tipo en Framework. El tipo correspondiente en .NET Framework es la estructura System.SByte.

Utilice el tipo de datos Short para incluir valores enteros que no requieren el ancho completo de datos de Integer. En algunos casos, Common Language Runtime puede empaquetar las variables Short de forma que se ahorre consumo de memoria.

El valor predeterminado de Short es 0.

Sugerencias de programación

  • Ampliación. El tipo de datos Short se amplía a IntegerLongDecimalSingle o Double. Esto significa que se puede convertir Short en cualquiera de estos tipos sin encontrar un error System.OverflowException.
  • Caracteres de tipo Si se anexa el carácter de tipo literal S a un literal, se convierte al tipo de datos ShortShort no tiene ningún carácter de tipo de identificador.
  • Tipo en Framework. El tipo correspondiente en .NET Framework es la estructura System.Int16.

Utilice el tipo de datos Single para incluir valores de punto flotante que no requieren el ancho completo de datos de Double. En algunos casos, Common Language Runtime puede empaquetar las variables Single de forma que se ahorre consumo de memoria.

El valor predeterminado de Single es 0.

Sugerencias de programación

  • Precisión. Cuando trabaje con números de punto flotante, tenga presente que no siempre tienen una representación precisa en memoria. Esto podría conducir a resultados inesperados en ciertas operaciones, como la comparación de valores y el operador Mod. Para obtener más información, vea Solucionar problemas de tipos de datos.
  • Ampliación. El tipo de datos Single amplía a Double. Esto significa que puede convertir Single en Double sin encontrar un error System.OverflowException.
  • Ceros finales. Los tipos de datos de punto flotante no tienen representación interna de caracteres 0 finales. Por ejemplo, no distinguen entre 4,2000 y 4,2. Por consiguiente, los caracteres 0 finales no aparecen cuando muestra o imprime valores de punto flotante.
  • Caracteres de tipo Al agregar el carácter de tipo de literal F a un literal, el tipo de datos se convierte al tipo de datos Single. Si se agrega el carácter de tipo de identificador ! a cualquier identificador, se convierte su tipo de datos al tipo Single.
  • Tipo en Framework. El tipo correspondiente en .NET Framework es la estructura System.Single.

 

STRING
Utilice el tipo de datos String para contener varios caracteres sin la sobrecarga de administración de matriz de Char(), una matriz de elementos Char.

El valor predeterminado de String es Nothing (una referencia nula). Observe que esto no es lo mismo que la cadena vacía (valor “”).

Caracteres Unicode

Los primeros 128 puntos de código (0–127) Unicode corresponden a las letras y símbolos de un teclado estándar de EE.UU. Estos primeros 128 puntos de código son los mismos que los que define el juego de caracteres ASCII. Los siguientes 128 puntos de código (128–255) representan caracteres especiales, como letras de alfabetos latinos, acentos, símbolos de moneda y fracciones. Unicode utiliza los puntos de código restantes (256-65535) para una amplia variedad de símbolos, incluidos caracteres de texto de todo el mundo, signos diacríticos, y símbolos técnicos y matemáticos.

Puede utilizar métodos como IsDigit y IsPunctuation en una variable individual String para determinar su clasificación Unicode.

Requisitos de formato

Debe agregar un literal String entre comillas (” “). Si necesita incluir una comilla como uno de los caracteres de la cadena, utilice dos comillas contiguas (“”). Esto se ilustra en el siguiente ejemplo:

Dim j As String = "Joe said ""Hello"" to me."
Dim h As String = "Hello"
' The following messages all display the same thing:
' "Joe said "Hello" to me."
MsgBox(j)
MsgBox("Joe said " & """" & h & """" & " to me.")
MsgBox("Joe said """ & h & """ to me.")

Observe que las comillas contiguas que representan unas comillas de la cadena son independientes de las comillas que comienzan y terminan el literal String.

Manipulación de cadenas

Cuando asigna una cadena a una variable String, esa cadena es inmutable, lo que significa que no puede cambiar su longitud ni su contenido. Cuando modifica una cadena de alguna manera, Visual Basic crea una nueva cadena y abandona la anterior. La variable String señala a continuación a la nueva cadena.

Puede manipular el contenido de una variable String mediante varias funciones de cadena. En el siguiente ejemplo se ilustra Left (Función, Visual Basic):

Dim S As String = "Database"
' The following statement sets S to a new string containing "Data".
S = Microsoft.VisualBasic.Left(S, 4)

Una cadena creada por otro componente puede completarse con espacios iniciales o finales. Si recibe este tipo de cadena, puede utilizar Trim, LTrim y RTrim (Funciones)para quitar estos espacios.

Para obtener más información sobre manipulación de cadenas, vea Cadenas en Visual Basic.

Sugerencias de programación

  • Números negativos. Tenga presente que los caracteres contenidos en String son sin signo y no pueden representar valores negativos. En cualquier caso, no debería utilizar String para contener valores numéricos.
  • Consideraciones sobre interoperabilidad. Si trabaja con componentes no escritos para .NET Framework, por ejemplo objetos de automatización o COM, recuerde que los caracteres de cadena pueden tener un ancho de datos distinto (8 bits) en otros entornos. Si está pasando un argumento de cadena de caracteres de 8 bits a este tipo de componentes, declárelo como Byte(), una matriz de elementos Byte, en lugar de String en el nuevo código de Visual Basic.
  • Caracteres de tipo. Anexar el carácter de tipo de identificador $ a un literal fuerza a que sea de un tipo de datos StringString no tiene ningún carácter de tipo de literal. Sin embargo, el compilador trata los literales incluidos entre comillas (” “) como String.
  • Tipo de Framework. El tipo correspondiente en .NET Framework es la clase System.String.
    • El tipo de datos UInteger proporciona el valor sin signo más largo en el ancho de datos más eficaz.
    • El valor predeterminado de UInteger es 0.
    • Los tipos de datos UInteger y Integer proporcionan un rendimiento óptimo en un procesador de 32 bits, ya que los tipos de enteros más pequeños (UShortShortByte ySByte), aunque utilizan menos bits, necesitan más tiempo para cargarse, almacenarse y obtenerse.

·         Sugerencias de programación

ULONG
Utilice el tipo de datos ULong para contener datos binarios demasiado grandes para UInteger o valores de enteros sin signo lo más grandes posibles.

El valor predeterminado de ULong es 0.

Sugerencias de programación

  • Números negativos. Dado que ULong es un tipo sin signo, no puede representar un número negativo. Si utiliza el operador menos () unario en una expresión que produce un resultado del tipo ULong, Visual Basic convierte primero la expresión a Decimal.
  • Compatibilidad con CLS.El tipo de datos ULong no forma parte de Common Language Specification (CLS), por lo que el código compatible con CLS no puede utilizar un componente que lo utiliza.
  • Consideraciones sobre interoperabilidad. Si trabaja con componentes no escritos para .NET Framework, por ejemplo objetos de automatización o COM, recuerde que los tipos como ulong pueden tener un ancho de datos distinto (32 bits) en otros entornos. Al pasar un argumento de 32 bits a esos componentes, declárelo comoUInteger en lugar de ULong en el código administrado de Visual Basic.

Además, la automatización no admite enteros de 64 bits en Windows 95, Windows 98, Windows ME o Windows 2000. No se puede pasar ningún argumento ULong de Visual Basic a un componente de automatización en estas plataformas.

  • Ampliación. El tipo de datos ULong se amplía a DecimalSingle y Double. Esto significa que se puede convertir ULong a cualquiera de estos tipos sin encontrar un error System.OverflowException.
  • Caracteres de tipo. Anexar los caracteres de tipo de literal UL a un literal fuerza a que sea de un tipo de datos ULongULong no tiene ningún carácter de tipo de identificador.
  • Tipo de Framework. El tipo correspondiente en .NET Framework es la estructura System.UInt64.

Defina y utilice un tipo de datos de estructura cuando necesite combinar varios tipos de datos en una única unidad o cuando ninguno de los tipos de datos básicos satisfaga sus necesidades.

El valor predeterminado de un tipo de datos de estructura se compone de la combinación de valores predeterminados de cada uno de sus miembros.

Formato de declaración

Una declaración de estructura se inicia con la instrucción Structure (Instrucción) y finaliza con la instrucción End Structure. La instrucción Structure proporciona el nombre de la estructura, que también actúa como identificador del tipo de datos que está definiendo la estructura. Otras partes del código pueden utilizar este identificador para declarar variables, parámetros y valores devueltos de la función para que pertenezca al tipo de datos de esta estructura.

Las declaraciones comprendidas entre las instrucciones Structure y EndStructure definen los miembros de la estructura.

Niveles de acceso a miembros

Debe declarar cada miembro utilizando una instrucción Instrucción Dim (Visual Basic) o una instrucción que especifique el nivel de acceso, como Public (Visual Basic), Friend (Visual Basic) o Private (Visual Basic). Si utiliza una instrucción Dim, el nivel de acceso es público de manera predeterminada.

Sugerencias de programación

  • Consumo de memoria. Como en los demás tipos de datos compuestos, no puede calcularse de forma precisa el consumo total de memoria de una estructura sumando las asignaciones de almacenamiento nominal de sus miembros. Es más, no puede suponerse que el orden de almacenamiento en la memoria sea el mismo que el orden de la declaración. Si necesita controlar el diseño de almacenamiento de una estructura, puede aplicar el atributo StructLayoutAttribute a la instrucciónStructure.
  • Consideraciones de interoperabilidad. Si está interactuando con componentes que no se han escrito para .NET Framework, por ejemplo objetos de automatización u objetos COM, tenga presente que los tipos de datos definidos por el usuario en otros entornos no son compatibles con los tipos de estructuras de Visual Basic.
  • Ampliación. No existen conversiones automáticas a un tipo de datos de estructuras o desde un tipo de datos de estructuras. Puede definir operadores de conversión en la estructura utilizando Operator (Instrucción) y puede declarar cada operador de conversión para que sea Widening o Narrowing.
  • Caracteres de tipo. Los tipos de datos de estructura no tienen ningún carácter de tipo de literal ni ningún carácter de tipo de identificador.
  • Tipo de marco de trabajo. No hay ningún tipo correspondiente en .NET Framework. Todas las estructuras se heredan de la clase de .NET FrameworkSystem.ValueType, pero ninguna estructura individual se corresponde con System.ValueType.

Ejemplo

En el siguiente modelo se muestra el esquema de declaración de una estructura.

[Public | Protected | Friend | Protected Friend | Private] Structure structname

{Dim | Public | Friend | Private} member1 As datatype1

‘ …

{Dim | Public | Friend | Private} memberN As datatypeN

End Structure

USHORT
Utilice el tipo de datos UShort para contener datos binarios demasiado grandes para Byte.

El valor predeterminado de UShort es 0.

Sugerencias de programación

  • Números negativos. Dado que UShort es un tipo sin signo, no puede representar un número negativo. Si utiliza el operador menos () unario en una expresión que produce un resultado del tipo UShort, Visual Basic convierte primero la expresión a Integer.
  • Compatibilidad con CLS. El tipo de datos UShort no forma parte de Common Language Specification (CLS), por lo que el código compatible con CLS no puede utilizar un componente que lo utiliza.
  • Ampliación. El tipo de datos UShort se amplía a IntegerUIntegerLongULongDecimalSingle y Double. Esto significa que se puede convertir UShort en cualquiera de estos tipos sin encontrar un error System.OverflowException.
  • Caracteres de tipo Si se anexa el carácter de tipo literal US a un literal, se convierte al tipo de datos UShortUShort no tiene ningún carácter de tipo de identificador.
  • Tipo en Framework. El tipo correspondiente en .NET Framework es la estructura System.UInt16.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: