el Guille, la Web del Visual Basic, C#, .NET y más...

Nuevo logo de .NET Framework

Primeras pruebas con Visual Studio 10

Usando la CTP de Sep08

 
Publicado el 27/Oct/2008
Actualizado el 27/Oct/2008
Autor: Guillermo 'guille' Som

Primeras pruebas con Visual Studio 10, usando la CTP de Septiembre 2008 (la usada en el PDC 2008)



 

Introducción:

En el PDC 2008 celebrado hace unos días, se ha presentado la primera "preview" de Visual Studio 10 (o Visual Studio 2010) y aquí te muestro algunas de las primeras pruebas que he hecho, principalmente "probando" algunas de las novedades que traerá la próxima versión de Visual Basic.

El problema con este tipo de "pruebas" es que no hay documentación y las pruebas hay que hacerlas a "ojo", es decir, intentando averiguar lo que se supone que hay de nuevo... Aclaro este punto, porque algunos piensan que los que tenemos acceso a este tipo de betas (o alfas, ya que esta primera versión ni siquiera se considera una beta), también tenemos acceso a las cosas que se supone que se incluyen como novedades, pero no... no suele ser así, y algunas de esas novedades te las tienes que imaginar o como mucho, probar con las cosas que el equipo de desarrollo ha ido publicando en sus blogs.

No me enrollo más, y te dejo algunas de las cosas que han cambiado en el IDE de Visual Studio y las cosas que he probado con referencia a las novedades de Visual Basic 10 (VB10).

Estos son los links a las distintas pruebas:

 

Por cierto... el logo de .NET ha cambiado... y ahora es como el mostrado arriba de esta página...


Bajar la CTP de Septiembre 08 de Visual Studio 2010

Si quieres bajarte la CTP de Visual Studio 2010 y .NET Framework 4.0, pulsa en este link:
http://go.microsoft.com/fwlink/?LinkId=131310

Y si quieres ver más información o dar soporte a esta "preview" de Visual Studio 2010, pulsa en este link:
http://go.microsoft.com/fwlink/?LinkId=129231


El nuevo look del IDE de Visual Studio 10

La primera impresión cuando abres el Visual Studio 2010 (o Visual Studio 10) es que han cambiado la página de inicio (Start Page), ahora utiliza WPF, con lo que se mejora el "look" de esa página de inicio.
En la figura 1 tienes una de las tres partes de esta página de inicio.
En la figura 2 tienes la parte que agrupa la creación de nuevos proyectos o el acceso a los proyectos existentes. Entre los cambios que hay, puedes ver que ahora es fácil de eliminar proyectos de esa lista, no se pueden reordenar, pero es posible que lo agreguen en futuras revisiones.

Figura 1. Página de inicio de Visual Studio 2010
Figura 1. Página de inicio de Visual Studio 2010

Figura 2. La sección para los proyectos de Visual Studio 2010
Figura 2. La sección para los proyectos de Visual Studio 2010


Seleccionado de las clases y variables en el IDE

El IDE de Visual Studio 10 permite seleccionar o resaltar las clases y tipos que tenemos seleccionado.
Por ejemplo, en la figura 3, tengo seleccionada la variable nums y en el editor se resaltan todas las veces que aparece esa variable.

Figura 3. Resaltado de la variable seleccionada
Figura 3. Resaltado de la variable seleccionada


Novedades de Visual Basic 10

A continuación te muestro las novedades de Visual Basic 10 que he probado:

 

Adiós al continuador de líneas (o casi)

Ahora no es necesario usar el continuador de líneas para escribir el código en varias líneas físicas.
Al menos en la mayoría de situaciones, aunque aún hay algunas cosillas que si no se usa el continuador de líneas, es posible que el compilador se líe y no nos permita usarlas.
Por ejemplo, puedes cambiar de línea (sin usar el continuador) después de un operador, después de una coma o un punto y cuando escribes consultas de LINQ o expresiones lambda multilíneas.

En los siguientes ejemplos puedes comprobar que no es necesario usar ese continuador para dividir el código en varias líneas físicas.

Si se usan operadores, se puede partir el código sin usar continuador de líneas:

Dim i1 = 10 + 5
Dim i2 = 10 +
    5

En ciertos casos, como este, se puede cambiar de línea sin usar el continuador:

Console.WriteLine("i1 = {0}, i2 = {1}",
    i1, i2)

Donde más se echaba en falta era en la asignación de cadenas:

Dim s = "Hola mundo" &
    vbCrLf &
    "Segunda línea"

También es muy útil cuando se escriben consultas de LINQ:

Dim q1 = From n In nums
         Where n > 4
         Select Valor = n,
         Espar = (n Mod 2) = 0

Incluso cuando se escriben consultas de LINQ usando los métodos extensores:

Dim q2 = nums.
    Where(Function(n) n > 4).
    OrderByDescending(Function(n) n)

En los bucles, hay situaciones en las que debemos usar el continuador de líneas:

For i = 0 To _
    nums2.Length - 1
    Console.WriteLine(i)
Next

Pero solamente si el compilador no se aclara, ya que en otros casos, si se pueden usar:

For i = 0 To nums2.
    Length - 1
    Console.WriteLine(i)
Next

Como vemos a continuación, tenemos muchas opciones en las que no es necesario el continuador de líneas:

For Each n In nums2.
    OrderByDescending(
        Function(n1) n1)
    Console.WriteLine(n)
Next

Y como veremos más abajo, también es muy útil cuando escribimos código que definen colecciones, arrays o expresiones lambda , sobre todo cuando son de varias líneas.

 

Propiedades autoimplementadas

Las propiedades autoimplementadas nos permiten definir de forma muy simple las propiedades que no deben ejecutar código personalizado en los bloques Set o Get.

Se permite asignar un valor inicial (como se hace con las variables normales), incluso a colecciones o arrays.

En el siguiente trozo de código, puedes ver un par de ejemplos de propiedades autoimplementadas, lo que no se permite es crear este tipo de propiedades con ámbitos diferentes para cada bloque de código (bloque Get o bloque Set) o propiedades que sean de solo lectura o solo escritura.

Class Colega
    ' Propiedades autoimplementadas "normales"
    Public Property Nombre As String
    Public Property Correo As String

    ' Con un valor inicial
    Public Property ID As String = "0001"

    ' Una propiedad de tipo colección
    ' con valores iniciales
    Public Property Valores As New List(Of Integer) From {1, 2, 3, 4, 5}

End Class

 

Inicialización de arrays

Ahora se pueden iniciar los arrays sin necesidad de indicar que es un array...

En este primer ejemplo, se define un array de tipo Integer de la forma "tradicional"

Dim nums1() As Integer = {1, 2, 3, 4, 5, 6}

Esta es la forma de definir un array de forma "simple":

Dim nums = {1, 2, 4, 3, 5, 7, 6, 9, 8}

Incluso se puede cortar en varias líneas para que resulte más fácil de leer,
por ejemplo cuando se usa la inicialización de objetos:

Dim colegas = {
    New Colega With {.Nombre = "Guille"},
    New Colega With {.Nombre = "Pepe"}
}

 

Inicialización de colecciones

En esta versión de Visual Basic, también se pueden inicializar las colecciones, aunque tiene un poco de "truco", ya que se debe usar la instrucción From para indicar los valores que se asignarán a la colección:

En este primer ejemplo vemos cómo crear una lista de tipo List(Of Integer):

Dim colNums As New List(Of Integer) From {1, 2, 3, 4, 5, 6}

En este otro inicializamos una colección de tipo Dictionary:

Dim colDic As New Dictionary(Of Integer, String) From {
    {1, "Uno"},
    {2, "Dos"},
    {3, "Tres"}
    }

En este ejemplo, inicializamos una colección de tipo List(Of Colega):

Dim colegas2 As New List(Of Colega) From {
    c1,
    New Colega With {.Nombre = "Pepe"},
    New Colega With {.Nombre = "Guille"}
    }

Por supuesto, no hace falta indicar las cosas en líneas diferentes:

Dim col2 As New List(Of Colega) From {c1, New Colega With {.Nombre = "Pepe"}}

 

Expresiones lambda

En Visual Basic 9 (o Visual Basic 2008) solo se podían definir expresiones lambda (o funciones en línea) usando Function y en esa función solo se permitía una instrucción.
En Visual Basic 10 (VB10), si esa expresión lambda no devolverá un valor, se puede usar Sub en lugar de Function, pero lo más interesante es que se pueden escribir expresiones lambda con más de una instrucción (es decir, una expresión lambda multilínea).
En los siguientes apartados puedes ver ejemplos de esto que comento:

Que no devuelven valores (Sub)

En este ejemplo asignamos un método para interceptar un evento:

AddHandler Button1.Click,
    Sub() MessageBox.Show("Hola (2) " & TextBox1.Text)

 

Multilínea

En este ejemplo, vemos algo parecido al anterior, pero usando una expresión lambda multilínea.
En este caso, al ser de tipo Sub, se debe indicar End Sub como final:

AddHandler Button1.Click,
    Sub()
        Label2.Text = "(Sub) Hola " & TextBox1.Text
    End Sub

En este ejemplo, al usar Function, se debe acabar el bloque de código con End Function y debe devolver algo... aunque sea nada:

AddHandler Button1.Click,
    Function()
        Label2.Text = "(Function) Hola " & TextBox1.Text
        Return Nothing
    End Function

En este ejemplo, se usa una expresión lambda de tipo Function multilínea:

Dim v1 = CInt(TextBox2.Text)
Dim v2 = CInt(TextBox3.Text)

Dim r = Function(x1 As Integer, x2 As Integer)
            Dim v = x1 + x2
            Return String.Format("{0} + {1} = {2}", x1, x2, v)
        End Function

Label3.Text = r(v1, v2)

Es importante tener en cuenta que si se escriben expresiones lambda multilíneas de tipo Function, siempre debe indicarse la instrucción Return con el valor que esa función debe devolver.


Y esto es todo por ahora... en cuanto haga más pruebas, te iré contando.

Espero que te sea de utilidad.

Nos vemos.
Guillermo

 



 


La fecha/hora en el servidor es: 22/12/2024 17:41:17

La fecha actual GMT (UTC) es: 

©Guillermo 'guille' Som, 1996-2024