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.
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.
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 hicieramos 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.
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).
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
La obligatoriedad, a la que hacíamos referencia anteriormente, de declarar las variables y constantes con el tipo de datos adecuado, la podemos aplicar a todo el proyecto o a un módulo en particular, para ello tenemos que usar la instrucción Option Strict On, una vez indicado, se aplicará a todo el código, no solo a las declaraciones de variable, constantes o al tipo de datos devuelto por las funciones y propiedades, sino también a las conversiones y asignaciones entre diferentes tipos de datos.
No debemos confundir Option Strict con Option Explicit, este último, al igual que en VB6, nos obliga a declarar todas las variables, mientras que el primero lo que hace es obligarnos a que esas declaraciones tengan un tipo de datos.
Tanto una como la otra tienen dos estados: conectado o desconectado dependiendo de que agreguémos On u Off respectivamente.
Como recomendación para buenas prácticas, debemos "conectar" siempre estas dos opciones, si bien Option Explicit On ya viene como valor por defecto, cosa que no ocurre con Option Strict, que por defecto está desconectado.
Cuando en VB6 agregábamos un nuevo formulario, módulo BAS o módulo de clase, se agregaba automáticamente la instrucción Option Explicit, en Visual Basic 2010 esta opción está predefinida y no se agrega a ningún módulo, pero eso no significa que no se aplique, aunque siempre podemos escribir esas instrucciones (con el valor On al final) en cada uno de los módulos o ficheros de código que agreguémos a nuestro proyecto. Lo mismo podemos hacer con Option Strict On, en caso de que nos decidamos a hacerlo, esas líneas de código deben aparecer al principio del fichero y solamente pueden estar precedidas de comentarios (instrucciones REM o líneas iniciadas con una comilla simple).
En la figura 1 mostrada anteriormente tenemos una captura del editor de Visual Basic 2010 en la que hemos indicado que queremos tener comprobación estricta.
También podemos hacer que Option Strict funcione igual que Option Explicit, es decir, que esté activado a todo el proyecto, en este caso no tendríamos que indicarlo en cada uno de los ficheros de código que formen parte de nuestro proyecto, si bien solamente será aplicable a los que no tengan esas instrucciones, aclaremos esto último: si Option Strict (u Option Explicit) está definido de forma global al proyecto, podemos desactivarlo en cualquiera de los ficheros, para ello simplemente habría que usar esas declaraciones pero usando Off en lugar de On. De igual forma, si ya está definido globalmente y lo indicamos expresamente, no se producirá ningún error. Lo importante aquí es saber que siempre se usará el estado indicado en cada fichero, independientemente de cómo lo tengamos definido a nivel de proyecto.
Para que siempre se usen estas asignaciones en todo el proyecto, vamos a ver cómo indicarlo en el entorno de Visual Basic 2010.
Abrimos el Visual Basic 2010 Express y una vez que se haya cargado, (no hace falta crear ningún nuevo proyecto, de este detalle nos ocuparemos en breve), seleccionamos la opción Herramientas>Opciones... se mostrará un cuadro de diálogo y del panel izquierdo seleccionamos la opción Proyectos y soluciones, la expandimos y seleccionamos Valores predeterminados de VB y veremos ciertas opciones, tal como podemos comprobar en la figura:
De la lista despegable Option Strict, seleccionamos On. Por defecto ya estarán seleccionadas las opciones On de Option Explicit y Binary de Option Compare, por tanto no es necesario realizar ningún cambio más, para aceptar los cambios y cerrar el cuadro de diálogo, pulsamos en el botón Aceptar.
Nota:
Aunque en esta captura muestre: C:\vbexpB1 en Default project location, salvo que lo cambiemos, aparecerá el path por defecto dentro de Mis documentos.
Como podemos observar, aparecen pocas opciones, realmente el IDE de Visual Basic 2010 Express nos muestra las predeterminadas para los desarrolladores de Visual Basic, si bien, podemos hacer que se muestren todas las disponibles, para hacerlo, debemos marcar la casilla que está en la parte inferior izquierda en la que podemos leer: Mostrar todas las configuraciones, al seleccionar esa opción nos mostrará un número mayor de opciones, tal como podemos ver en la figura:
Desde este momento el compilador de VB se volverá estricto en todo lo relacionado a las declaraciones de variables y conversiones.
Nota:
Una de las ventajas del IDE (Integrated Development Environment, entorno de desarrollo integrado) de Visual Basic 2010 es que nos avisa al momento de cualquier fallo que cometamos al escribir el código, este "pequeño" detalle, aunque alguna veces puede llegar a parecer fastidioso, nos facilita la escritura de código, ya que no tenemos que esperar a realizar la compilación para que tengamos constancia de esos fallos.
Aunque en estos módulos no trataremos a fondo el entorno de desarrollo, ya que la finalidad de este curso online es tratar más en el código propiamente dicho, vamos a mostrar otro de los sitios en los que podemos indicar dónde indicar que se haga una comprobación estricta de tipos y, como veremos, también podremos indicar algunas "nuevas peculiaridades" de Visual Basic 2010, todas ellas relacionadas con el tema que estamos tratando.
Cuando tengamos un proyecto cargado en el IDE de Visual Basic 2010 Express, (pronto veremos cómo crear uno), podemos mostrar las propiedades del proyecto, para ello seleccionaremos del menú Proyecto la opción Propiedades de
Seleccionando la ficha Compilar, además de las típicas opciones de Option Strict, Option Explicit, Option Compare y Option Infer, (estas asignaciones solo serán efectivas para el proyecto actual), tendremos cómo queremos que reaccione el compilador si se cumple algunas de las condiciones indicadas. Entre esas condiciones, tenemos algo que muchos desarrolladores de Visual Basic siempre hemos querido tener: Que nos avise cuando una variable la hemos declarado pero no la utilizamos (Variable local no utilizada). Al tener marcada esta opción (normalmente como una Advertencia), si hemos declarado una variable y no la usamos en el código, (siempre que no le hayamos asignado un valor al declararla), nos avisará, tal como podemos ver en la figura:
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.
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.
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.
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.
Ahora, veamos unos videos, para comprender un poco mejor esto, en la practica. Espero que te sirvan
Muy bien, hemos terminado otro sub-contenido, vaya que si fue largo iquest;Verdad?. Espero que te halla servido. Vamos! que si no entendiste algo, pues leelo nuevamente y si aún así nada de nada, pues escribe en el foro, seguro que te podremos ayudar.
