Lo nuevo en Visual Basic .NET (Parte 1)

Published on Author lopezLeave a comment

En post anteriores:

Lo nuevo de CSharp (Parte 1)
Lo nuevo de CSharp (Parte 2)

había escrito sobre algunas características nuevas que aparecen en el CSharp 3, que vendrá integrado en el Visual Studio 2008, y que estoy probando en la beta 2 de esta IDE.

Veamos ahora un ejemplo en VB.NET 9 (como se lo llama), disponible en VbNetNew1.zip

Es un simple programa de consola, que utiliza una clase Supplier:

 

Public Class Supplier Private mSupplierId As Integer Private mName As String Private mCity As String Public Sub New(ByVal id As Integer) mSupplierId = id End Sub Public Property SupplierId() As Integer Get Return mSupplierId End Get Set(ByVal value As Integer) mSupplierId = value End Set End Property Public Property Name() As String Get Return mName End Get Set(ByVal value As String) mName = value End Set End Property Public Property City() As String Get Return mCity End Get Set(ByVal value As String) mCity = value End Set End Property End Class

 

No encontré que el nuevo VB.NET tuviera propiedades automáticas, como en el nuevo CSharp. Así que en este ejemplo, el código de la clase no muestra nada nuevo.

En la rutina Main:

1 Sub Main() 2 Dim suppliers() As Supplier = New Supplier() { _ 3 New Supplier(1) With {.Name = "John Madison", .City = "Washington"}, _ 4 New Supplier(2) With {.Name = "Ann Arbor", .City = "Ohio"}, _ 5 New Supplier(3) With {.Name = "Don Johnson", .City = "Miami"} _ 6 } 7 8 For Each supplier As Supplier In suppliers 9 Console.WriteLine("{0} {1}", supplier.SupplierId, supplier.Name) 10 Next 11 12 Dim c = New With {.Name = "John Doe", .City = "Everywhere"} 13 14 Console.WriteLine("{0} lives in {1}", c.Name, c.City) 15 16 For Each supplier As Supplier In suppliers 17 supplier.Print() 18 Next 19 20 Console.ReadLine() 21 End Sub 22

comienza a aparecer algunas características nuevas. En la línea 2, vemos la creación e inicialización de un arreglo, con el uso de llaves. En la línea 3, 4 y 5, aparece la creación de objetos con uso de With. Esto permite, llamar a un constructor, como Supplier(1), y luego completar las propiedades, con punto más el nombre de la propiedad.

En la línea 12, podemos crear una variable con un tipo implícito. Vemos que el new no refiere a ninguna clase en particular, pero en el with se colocan las propiedades que va a tener ese objeto.

Automáticamente, el IDE “arma” el tipo de la variable c, y me permite usar c.Name y c.City en la línea 14. La IDE hace inferencia de tipo.

En la línea 17, Print no es un método de la clase Supplier. Está definido en otra “clase”:

Imports System.Runtime.CompilerServices Module Extensions <Extension()> _ Public Sub Print(ByVal supplier As Supplier) Console.WriteLine("Supplier {0} {1}", supplier.SupplierId, supplier.Name) End Sub End Module

Es un extension method: un método que se puede definir para las instancias de una clase, fuera de la misma definición de la clase. En CSharp, vimos que se usaban clases estáticas. Acá se utilizan módulos. Para que el método fuera de extensión, en CSharp se colocaba un this adornando al primer parámetro. Acá se usa el atributo <Extension()> al método, un atributo que está en el namespace System.Runtime.CompilerServices.

Ya vendrá otro post con otras características.

Nos leemos!

Angel “Java” Lopez
http://www.ajlopez.com/

Leave a Reply

Your email address will not be published. Required fields are marked *