Vamos a desvelar las principales novedades de VB9, otramente conocido como Visual Basic 2008, que como ya imaginareis un nombre identifica la versión del compilador y el otro concreta la versión de Visual Studio sobre la que trabaja.
Uno de los puntos fuerte de VB siempre ha sido su amigable entorno y agradables facilidades y, cómo no, su “intellisense” a la hora de escribir código, que por supuesto es una de las características que más atraen a los programadores que lo usan. Es claro que esta versión no decepcionará a nadie y más bien nos producirá cierta incredulidad, pues en menos de una hora ya estaremos tan familiarizados con las nuevas ayudas del editor que no recordaremos más la versión anterior.
Una de las características que lo fundamental es la posiblidad de poder escoger para qué "framework" trabajará nuestra aplicación.
La siguiente lista recoge las nuevas características de este VB 2008:
- XML literals, XML axix properties, XML IntelliSense
Dim MyGrupo =
<?xml version="1.0"?>
<Personas xmlns="urn:Mis:Ejemplos:Gente">
<Persona ID="1">
<Nombre>"Jose"</Nombre>
<Apellido>"García"</Apellido>
<Edad>22</Edad>
</Persona>
<Persona ID="2">
<Nombre>"Antonio"</Nombre>
<Apellido>"Fernandez"</Apellido>
<Edad>11</Edad>
</Persona>
</Personas>
Me.DataGridView1.DataSource = _ (From TuGrupo In MiGrupo...<Personajes:Personas>
Where TuGrupo.<Personajes:Edad>.Value < 13 Select Name = TuGrupo.<Personajes:Nombre>.Value, _
Apellido = TuGrupo.<Personajes:Apellido>.Value).Tolist
Dim Numero1 As Integer? = Nothing
Dim Numero2 As Integer = 10
Try
' El resultado de la suma es nothing
' Pero este es un valor aceptable para la variable Numero 1
Numero1 = Numero2 + Numero1
Catch ex As Exception
MessageBox.show("Numero1 no puede ser Nothing")
End Try
Try
' Numero2 no acepta nulos
Numero2 = Numero1 + Numero2
Catch ex As Exception
MessageBox.Show("Numero 2 no puede ser Nothing")
End Try
Private Sub Inicializar()
'
'Los Inicializadores de siempre
Dim MiPersona = New Persona
With MiPersona
.Nombre = "Carlos"
.Apellido = "Arjona"
.Edad = 28
End With
'
'Ahora en VB9, inicializadores basados en expresiones
'no permiten crear colecciones de objetos complejos
Dim TusPersonas = New List(Of Individuo) _
{ _
{ .Nombre = "Jose", _
.Apellido = "Garcia"} _
{ .Nombre = "Antonio",
.Apellido = "Garrido"} _
}
End Sub
Partial Class Individuo
Public Property Nombre() As String
Public Property Apellido As String
Public Property Edad As Integer
End Class
'Explicito... lo de siempre
Dim MiNombre As String = "Mace Windu"
Dim MiEdad As Integer = 15
Dim MisPersonas As Persona = New Persona With {.Nombre = "Fernando"}
'Implicito, Infefencia en la definicion
'Explicito... lo de siempre
Dim TuNombre As String = "Lucas"
Dim TuEdad As Integer = 18
Dim TusPersonas As Persona = New Persona With {.Nombre = "Juan", .Edad = 21}
'
'Nuestra clase Persona
Class Persona
Public Nombre = ""
Public Apellido = ""
Public Edad = 0
End Class
Dim Filtro = Personas.Where(Function(p) p.Edad < 13)
Me.DataGridView1.DataSource = (From quienes In Filtro Select New With {.Nombre = quienes.Nombre}).ToList
<System.Runtime.CompilerServices.Extension()> _
Module MisExtensiones
<System.Runtime.CompilerServices.Extension()> _
Function RaizQ(ByVal nrO As System.Double) As Double
Return Math.Sqrt(nro)
End Function
End Module
Private Sub Extensiones()
Dim Numero As Double = 8
MessageBox.Show(Numero.RaizQ().ToString)
End Sub
Public Personas() = _
{ _
New With {.Nombre = "Lidia", .Apellido = "Martinez", .Edad = 19}, _
New With {.Nombre = "Jose", .Apellido = "Gonzalez", .Edad = 19}, _
New With {.Nombre = "Antonio", .Apellido = "Perez", .Edad = 19}, _
}
Salu2
Texto adaptado por Mace Windu
Texto original: SP nº158