PDF de programación - Visual Basic 2010 - Novedades del Lenguaje

Visual Basic 2010 - Novedades del Lenguajegráfica de visualizaciones

Publicado el 14 de Enero del 2017
4.180 visualizaciones desde el 14 de Enero del 2017
602,4 KB
4 paginas
Creado hace 13a (23/12/2010)
Visual Basic 2010
Novedades del lenguaje

La llegada de Visual Studio 2010 marca también un nuevo paso en la evolución de Visual Basic. Uno de
los grandes clásicos entre los lenguajes de programación desembarca con energías renovadas y un nota-
ble conjunto de nuevas características, que a buen seguro serán bienvenidas por toda la comunidad de
desarrolladores. En este artículo hacemos una revisión de las más importantes novedades que se pre-
sentan en esta nueva versión.

A

Confluencia y evolución conjunta de VB
y C#

ntes de comenzar con las noveda-
des del lenguaje, queremos mencionar un hecho
especialmente destacable: la evolución paralela de
funcionalidades que a partir de Visual Studio 2010
experimentarán y ofrecerán los dos principales len-
guajes de la plataforma: Visual Basic y C#.

Desde la primera versión de .NET Framework,
los equipos de desarrollo de estos dos lenguajes
han procurado marcar algunas diferencias entre
ambos, siendo su intención la de hacer de Visual
Basic un lenguaje más atractivo al desarrollador de
aplicaciones de gestión, mientras que C# se pre-
tendía dirigir a los programadores más orientados
hacia el desarrollo a más “bajo nivel”: componen-
tes, servicios, etc. Scott Wiltamuth, uno de los
directores de la división de lenguajes de Visual Stu-
dio, menciona [1] que llevar estos objetivos a la
práctica resultó más complicado de lo esperado,
debido a la presencia de lo que él denomina “pode-
rosas fuerzas de unificación” que han propiciado
un cambio de orientación hacia el desarrollo en
paralelo de funcionalidades para los dos lengua-
jes, como:

• La existencia de un entorno de desarrollo inte-
grado y bloques de construcción de aplicaciones
comunes a ambos lenguajes.

• La naturaleza orientada a objetos y el sistema de

tipos común a los dos lenguajes.

Luis Miguel Blanco
Arquitecto de software en
Alhambra-Eidos

• El hecho de que las principales áreas de innova-
ción presente y futura en el desarrollo de los len-
guajes se reflejan en partes “exteriores” de los
mismos, como ocurre en el caso de LINQ.

A los elementos anteriores hay que añadir las
demandas de las comunidades de desarrolladores,
ya que los programadores de VB querían aquellas
funcionalidades disponibles en C# de las que VB
carecía, y viceversa.

Todo ello ha propiciado el cambio de estrate-
gia que acabamos de mencionar, que tiene el cla-
ro objetivo de que, independientemente del len-
guaje que utilicemos, podamos aprovechar toda
la potencia que .NET Framework pone a nuestra
disposición.

Propiedades auto-implementadas

Antes de la llegada de Visual Basic 2010 (o Visual
Basic 10, como también se denomina), cada vez
que en una clase se definía una propiedad, está-
bamos obligados a codificar por completo sus blo-
ques de acceso/asignación (Get/Set), aún cuando
la propiedad no necesitara una lógica especial para
dichas operaciones. A partir de esta nueva versión,
es posible crear propiedades auto-implementadas,
que se declaran en una simple línea de código sin
necesidad de especificar los bloques Get/Set; con
la ventaja adicional de poder asignar al mismo tiem-
po un valor predeterminado.

Al crear una propiedad de este modo, el compila-
dor genera internamente un campo de respaldo con
ámbito de clase, cuyo nombre se compone de un guión
bajo y el nombre de la propiedad. Dicho campo es per-
fectamente accesible desde el código de la clase, aun-
que no es expuesto a través de IntelliSense.

Las propiedades auto implementadas sufren algu-
nas restricciones: no pueden ser declaradas con los
modificadores ReadOnly ni WriteOnly, y en el caso de
que la propiedad vaya a contener un array, no podemos
especificar la dimensión del mismo en la declaración,
aunque sí es posible inicializarlo, como vemos en los
ejemplos del listado 1.

Inicializadores de colecciones

La manera que hasta ahora teníamos de inicializar una
colección con un conjunto de valores consistía en lla-
mar sucesivamente a su método Add, pero Visual Basic
2010 aporta una nueva sintaxis más sucinta para esta
tarea, consistente en utilizar la palabra clave From en el
momento de crear la colección, seguida de una lista con
los valores de inicialización encerrados entre llaves; inter-
namente, el compilador generará una llamada al méto-
do Add de la colección por cada uno de los elementos
existentes en la lista. El listado 2 presenta un ejemplo
basado en la clase Libro del listado 1.

Pero, al inicializar colecciones como la del listado 2,
¿no sería estupendo poder pasar solamente los valores
para las propiedades de cada objeto de la colección, y
que ésta se encargara de instanciar los objetos? Esto es

Public Class Libro

Public Property Título As String
Public Property Autor As String
Public Property Precio As Decimal
Public Property Editorial
As String = “Netalia”

‘ La siguiente línea produce un error de compilación:
‘ Public Property Distribuidores Varios(10) As String

‘ La siguiente línea es correcta para crear una
‘ propiedad que contenga un array:
Public Property Distribuidores

As String() = New String() {

“Distribuidor01”, “Distribuidor02” }

Public Sub VerCamposRespaldo()
Console.WriteLine(_Título)
Console.WriteLine(_Autor)
Console.WriteLine(_Precio)
Console.WriteLine(_Editorial)
Console.ReadLine()

End Sub
End Class

Listado 1. Propiedades auto-implementadas

Dim lstLibros1 As List(Of Libro) = New List(Of Libro) From {

.Título = “El camino”, .Autor = “Miguel Delibes”,
.Precio = 18.00D, .Editorial = “Ediciones Destino”

New Libro() With {

},
New Libro() With {

.Título = “El caballero de Olmedo”, .Autor = “Lope de Vega”,
.Precio = 11.50D, .Editorial = “Vicens‐Vives”

}

}

Listado 2. Inicializadores de colecciones

Dim lstLibros2 As New List(Of Libro) From {

{“El camino”, “Miguel Delibes”, 18.00D, “Ediciones Destino”},
{“El caballero de Olmedo”, “Lope de Vega”, 11.50D, “Vicens‐Vives”} }

‘———————————————————————————‐
<Extension()>
Public Sub Add(ByVal lstLibros As List(Of Libro),

ByVal sTítulo As String,
ByVal sAutor As String,
ByVal dPrecio As Decimal,
ByVal sEditorial As String)

lstLibros.Add(New Libro() With { .Título = sTítulo, .Autor = sAutor,
.Precio = dPrecio, .Editorial = sEditorial })

End Sub

Listado 3

perfectamente posible creando un método de extensión
con el nombre Add para la colección List(Of Libro), lo
que hará posible utilizar una sintaxis de inicialización
mucho más simple, como muestra el listado 3.

En el caso de que estemos desarrollando una colec-
ción propia en la que deseemos que esté disponible esta
sintaxis de inicialización, es preciso implementar la inter-
faz IEnumerable, o al menos cumplir con el patrón IEnu‐
merable, es decir, implementar métodos GetEnumerator y
Add. Con respecto al método Add, podemos crear una sobre-
carga que facilite la sintaxis de inicialización para nuestra
colección, o bien un método de extensión como en el caso
anterior. En el listado 4 vemos un ejemplo.

Continuación de línea implícita

Suponemos que para la inmensa mayoría de aquellos
que programan con Visual Basic siempre ha resulta-
do un fastidio tener que utilizar el carácter de guión
bajo (subrayado) para separar en varias líneas físicas
una misma línea lógica de código. Gracias a la nueva
característica de continuación de línea implícita en
Visual Basic 2010, ahora será posible obviar el guión
bajo al continuar una instrucción en la línea siguien-
te en una gran cantidad de lugares de nuestro código.
La especificación del lenguaje [3] detalla todas las situa-
ciones en las que el carácter de continuación puede
omitirse. Los listados 1-4 incluyen múltiples ejemplos
de continuaciones de línea implícitas.

a
í
n
a
M
t
e
N
t
o
d

17

Dim colBiblioteca1 As New Biblioteca() From {

New Libro() With {

.Título = “El camino”, .Autor = “Miguel Delibes”,
.Precio = 18.00D, .Editorial = “Ediciones Destino” },

New Libro() With {

.Título = “El caballero de Olmedo”, .Autor = “Lope de Vega”,
.Precio = 11.50D, .Editorial = “Vicens‐Vives” }

}

Dim colBiblioteca2 As New Biblioteca() From {

{“El camino”, “Miguel Delibes”, 18.00D, “Ediciones Destino”},
{“El caballero de Olmedo”, “Lope de Vega”, 11.50D, “Vicens‐Vives”} }

‘—————————————————‐
Public Class Biblioteca

Implements IEnumerable(Of Libro)
Private lstLibros As List(Of Libro)

Public Sub New()

Me.lstLibros = New List(Of Libro)

End Sub

Public Sub Add(ByVal oLibro As Libro)

lstLibros.Add(oLibro)

End Sub

Public Sub Add(ByVal sTítulo As String,
ByVal sAutor As String,
ByVal dPrecio As Integer
ByVal sEditorial As String)

lstLibros.Add(New Libro() With {

.Título = sTítulo, .Autor = sAutor,
.Precio = dPrecio, .Editorial = sEditorial })

End Sub

Public Function GetEnumerator()
As System.Collections.Generic.IEnumerator(Of Libro)
Implements System.Collections.Generic.IEnumerable(Of Libro).GetEnumerator

Return lstLibros.GetEnumerator()

End Function

End Class

Listado 4

a
í
n
a
M
t
e
N
t
o
d

18

Expresiones lambda
Las expresiones lambda fueron introducidas en Visual
Basic 2008, pero entonces solo podían constar de una
única línea de código, siendo también obligatorio que
la expresión devolviera un valor. Esta restricción ha sido
superada en Visual Basic 2010, donde podemos escri-
bir expresiones lambda compuestas por varias líneas
de código. Como novedad adicional, además de crear
expresiones que devuelvan un valor (comportamiento
habitual), podemos crear otras que no devuelvan resul-
tado alguno (al estilo de un procedimiento Sub) utili-
zando un delegado de tipo Action(Of T), como se
muestra en el listado 5.

Covarianza y contravarianza

Cuando trabajamos con tipos genéricos que mantienen
una relación de herencia, debemos tener en cuenta cier-
tas restricciones impuestas por la plataforma de las que

‘ Expresión lambda multi‐línea
Dim Lambda01 As Func(Of Integer, String) =

Function(nNumero As Integer)
Dim nNuevoNumero As Integer
Dim sResultado As String
nNuevoNumero = nNumero * 7
sResultado = “El resultado es: “ & nNuevoNumero.ToString()
Return sResultado

End Function
  • Links de descarga
http://lwp-l.com/pdf689

Comentarios de: Visual Basic 2010 - Novedades del Lenguaje (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad