Variables y constantes en Visual Basic. Asignación de valores, identificadores y tipos
Disponer de todos estos tipos de datos no tendría ningún sentido si no los pudiéramos usar de alguna otra forma que de forma literal. Y aquí es donde entran en juego las variables y constantes, no vamos a contarte qué son y para que sirven, salvo en el caso de las constantes, ya que no todos los desarrolladores las utilizamos de la forma adecuada.
Consejo para usar las constantes
Siempre que tengamos que indicar un valor constante, ya sea para indicar el máximo o mínimo permitido en un rango de valores o para comprobar el término de un bucle, deberíamos usar una constante en lugar de un valor literal, de esta forma si ese valor lo usamos en varias partes de nuestro código, si en un futuro decidimos que dicho valor debe ser diferente, nos resultará más fácil realizar un solo cambio que cambiarlo en todos los sitios en los que lo hemos usado, además de que de esta forma nos aseguramos de que el cambio se realiza adecuadamente y no tendremos que preocuparnos de las consecuencias derivadas de no haber hecho el cambio en todos los sitios que deberíamos.
Pero esto no es algo nuevo, las constantes se definen de la misma forma que en VB6, salvo que ahora podemos obligarnos a indicar el tipo de datos que esa constante va a contener. Esto lo veremos en la siguiente sección.
Declarar variables
La declaración de las variables en Visual Basic 2010 se hace de la misma forma que en VB6, o casi, las excepciones vienen dadas, como hemos comentado antes, de la posibilidad de obligar a definir el tipo de cada variable y de cómo podemos definir más de una variable en una misma instrucción Dim.
Para no embrollar mucho la cosa, veamos ejemplos de cómo definir o declarar variables siguiendo las buenas costumbres, es decir, indicando siempre el tipo de datos de la variable.
En VB6 podíamos definir más de una variable en una misma instrucción Dim, aunque dependiendo de cómo hiciéramos esa declaración podía ser que, normalmente para nuestro pesar, que no todas las variables fuesen del tipo que "supuestamente" habíamos querido indicar.
Por ejemplo, con esta declaración:
Dim a, b, c As Integer
A primera vista estamos declarando tres variables de tipo Integer, pero realmente solo declara con el tipo indicado a la última variable, las otras dos, se declaran con tipo Variant o el tipo de datos predefinido.
En Visual Basic 2010 al usar esa misma línea de código estamos declarando tres variables de tipo Integer, esto es algo que debemos tener en cuenta, sobre todo si nuestra intención era hacer precisamente lo que VB6 hacía, es decir, declarar dos variables de tipo Variant y una de tipo Integer.
Declarar variables y asignar el valor inicial
En Visual Basic 2010 también podemos inicializar una variable con un valor distinto al predeterminado, que en los tipos numéricos es un cero, en las fechas es el 1 de enero del año 1 a las doce de la madrugada (#01/01/0001 12:00:00AM#) y en la cadenas es un valor nulo (Nothing), para hacerlo, simplemente tenemos que indicar ese valor, tal como veremos es muy parecido a como se declaran las constantes. Por ejemplo:
Dim a As Integer = 10
En esa misma línea podemos declarar y asignar más variables, pero todas deben estar indicadas con el tipo de datos:
Dim a As Integer = 10, b As Integer = 25
Por supuesto, el tipo de datos puede ser cualquiera de los tipos primitivos:
Dim a As Integer = 10, b As Integer = 25, s As String = "Hola"
Aunque para que el código sea más legible, y fácil de depurar, no deberíamos mezclar en una misma instrucción Dim más de un tipo de datos.
Nota:
Es importante saber que en las cadenas de Visual Basic 2010 el valor de una variable de tipo String no inicializada NO es una cadena vacía como ocurría en VB6, sino un valor nulo (Nothing).
El tipo de datos Char
En Visual Basic 2010 podemos declarar valores de tipo Char, este tipo de datos es un carácter Unicode y podemos declararlo y asignarlo a un mismo tiempo. El problema con el que nos podemos encontrar es a la hora de indicar un carácter literal.
Si bien en VB6 no existe el tipo de datos Char, si podemos convertir un valor numérico en un carácter (realmente en una cadena) o bien podemos convertir un carácter en su correspondiente valor numérico.
Dim c As String
c = Chr(65)
Dim n As Integer
n = Asc("A")
En Visual Basic 2010 también podemos usar esas mismas funciones, aunque en el caso de Chr, el valor que devuelve esta función es un valor de tipo Char, no de tipo String como ocurre en VB6, pero debido a que un valor de tipo Char se puede convertir en una cadena, podemos hacer una asignación como la mostrada en el código anterior sin ningún tipo de problemas.
Si nuestra intención es asignar un valor Char a una variable, además de la función Chr, podemos hacerlo con un literal, ese valor literal estará encerrado entre comillas dobles, (al igual que una cadena), aunque para que realmente sea un carácter debemos agregarle una c justo después del cierre de las comillas dobles:
Dim c As Char = "A"c
Tipos anulables
Otra interesantísima característica de Visual Basic 2010 que conviene conocer, es lo que se denominan tipos anulables.
Los tipos anulables no son nuevos en Visual Basic, de hecho su origen lo encontramos en Visual Studio 2005, aunque eso sí, implementando la clase Nullable(Of T).
Con Visual Basic 2008 y versiones superiores no es necesario declarar ninguna clase para implementar tipos anulables dentro de nuestras aplicaciones, y podemos declararlos de forma directa.
Un tipo de dato anulable nos permitirá declarar una variable que podrá tener un tipo de dato nulo.
Si hemos estado atentos hasta ahora, hemos podido ver que las variables numéricas por ejemplo, se inicializan a 0.
Si quisiéramos por la razón que fuera, declarar esa variable como nula para saber si en un determinado momento ha cambiado de valor o cualquier otra acción, deberíamos utilizar los tipos de datos anulables, o bien, utilizar técnicas más rudimentarias como una variable de tipo Boolean que nos permitiera saber si ha habido un cambio de valor en una variable, sin embargo, coincidirá conmigo en que el uso de un tipo de datos anulable es más natural y directo.
De esta forma, podríamos trabajar con tipos de datos anulables o que los declararemos como nulos.
A continuación veremos un ejemplo:
Dim valor As Integer?
Para acceder al valor de un tipo anulable, podríamos hacerlo de la forma habitual, ahora bien, si no sabemos si el valor es nulo o no, podríamos acceder a su valor preguntando por él mediante la propiedad HasValue. La propiedad Value nos indicará también, el valor de esa variable.
Un ejemplo que aclare esta explicación es el que podemos ver a continuación:
Dim valor As Integer?
If Valor.HasValue Then
MessageBox.Show(valor.Value)
End If
Otra característica de los tipos anulables es la posibilidad de utilizar la función GetValueOrDefault.
Esta función nos permitirá acceder al valor de la variable si no es nulo, y al valor que le indiquemos si es nulo.
Un breve ejemplo de este uso es el que se indica a continuación:
Dim valor As Integer?
valor = 2010
MessageBox.Show(valor.GetValueOrDefault(2012))
End If
En este ejemplo, el compilador nos devolvería el valor 2010, ya que GetValueOrDefault sabe que la variable no posee un valor nulo y que por lo tanto, debe obtener el valor no nulo de la variable anulable.
En el caso de que no hubiéramos dado ningún valor a la variable, la aplicación obtendría el valor 2012.
Tipos anónimos
Esta característica de Visual Basic 2010, nos permite declarar los tipos de datos de forma implícita desde el código de nuestras aplicaciones.
Un ejemplo práctico de declaración de tipos anónimos es el siguiente:
Dim declaración = New With {.Nombre = "Carlos", .Edad = 27}
MessageBox.Show(String.Format("{0} tiene {1} años", _
declaracion.Nombre, declaracion.Edad))
Como podemos ver en el ejemplo anterior, hemos declarado un objeto al que no hemos indicado ningún tipo de dato concreto, pero a la hora de crear ese objeto, hemos creado implícitamente un miembro Nombre y un miembro Edad.
Propiedades autoimplementadas
Esta característica de Visual Basic 2010 nos permite declarar propiedades y autoimplementarlas con un valor determinado.
De esta manera, podremos inicializar una propiedad con un valor determinado.
Un sencillo ejemplo de uso de esta característica es el siguiente:
Property Id As Integer = 0
Property NamePerson As String = <"sin nombre">
Property AgePerson As Byte = 0
En este ejemplo, se han creado tres propiedades, una de ellas de tipo Int32, otra de tipo String, y una tercera de tipo Byte.
Estas propiedades están inicializadas con valores por defecto.
Inicialización de colecciones
Otra característica muy útil en Visual Basic es la inicialización de colecciones, que nos permite inicializar una colección de datos con valores de forma directa.
La mejor forma de entender esto es viendo un ejemplo.
Supongamos la siguiente interfaz en Visual Basic:
Interface IPerson
Property Id As Integer
Property Name As String
Property Age As Byte
End Interface
Ahora, crearemos una clase que implemente la interfaz IPerson:
Public Class Estudiante
Implements IPerson
<DefaultValue("0")>
Property Id As Integer Implements IPerson.Id
Property Name As String Implements IPerson.Name
Property Age As Byte Implements IPerson.Age
End Class
Ya tenemos la interfaz y la clase que implementa la interfaz, por lo que ahora, lo tenemos que hacer es consumir la clase Estudiante e inicializar los elementos de la colección.
Un ejemplo práctico de inicialización es el que se indica a continuación:
Property StudentCollection As New List(Of Estudiante)
...
Me.StudentCollection.Add(New Estudiante With {.Id = 1, .Name = "Luisa", .Age = 25})
Me.StudentCollection.Add(New Estudiante With {.Id = 2, .Name = "Antonio", .Age = 27})
Me.StudentCollection.Add(New Estudiante With {.Id = 3, .Name = "Juan", .Age = 26})
Como podemos apreciar, al mismo tiempo que declaramos un nuevo objeto de tipo Estudiante, inicializamos sus propiedades con valores, de forma que asignamos esos elementos a la colección con valores directos.
Muy bien, hemos terminado otro contenido, vaya que sí fue largo ¿verdad?. Espero que te haya servido. ¡Vamos! que si no entendiste algo, pues leelo nuevamente y si aún así nada de nada, pues deja un comentarios, seguro que te podré ayudar.
La última actualización de este artículo fue hace 6 años