I forbindelse med en Alt om DATA artikel om VB9 og LINQ lovede jeg at komme ind på nogle af de tilføjelser til sproget som dels gør LINQ mulig, men også give nye muligheder selvom man ikke bruge LINQ. Vi skal jo starte et sted - så hvorfor ikke med en ny måde at bruge With på.
Som du sikkert ved er With tidligere blevet brugt til initialisering - eksempelvis
' En ASP.NET TextBox
Dim txt As New TextBox
With txt
.ID = "txt1"
.Width = "100"
.BackColor = Color.Blue
.Enabled = True
End With
I VB9 har With også fået betydning i forbindelse med erklæring, og ovennævnte kan således skrives som
' En ASP.NET TextBox
Dim minTextbox As New TextBox With {.ID = "txt1", .Width = 100, _
.BackColor = Color.Blue, .Enabled = True}
Resultatet bliver det samme, men man sparer lidt plads, og det giver lidt mere overskuelighed. With kan naturligvis også bruges til "egne" objekter. Som eksempel kan bruges denne klasse
Public Class PostnummerBy
Private _postnummer As String
Public Property Postnummer() As String
Get
Return _postnummer
End Get
Set(ByVal value As String)
_postnummer = value
End Set
End Property
Private _bynavn As String
Public Property Bynavn() As String
Get
Return _bynavn
End Get
Set(ByVal value As String)
_bynavn = value
End Set
End Property
End Class
Et objekt kan nu oprettes som
' Initialisering af objekt af egen klasse
Dim værløse As New PostnummerBy With {.Bynavn = "Værløse", .Postnummer = "3500"}
Og man kan sågar også benytte With i forbindelse med erklæring og inialisering af arrays
' Initialisering af et array
Dim pb() As PostnummerBy = { _
New PostnummerBy With {.Bynavn = "Værløse", .Postnummer = "3500"}, _
New PostnummerBy With {.Bynavn = "Farum", .Postnummer = "3520"}, _
New PostnummerBy With {.Bynavn = "Birkerød", .Postnummer = "3460"}}
Det ser måske ikke ud som den store tilføjelse til VB, men den er bydende nødvendig for LINQ, og man vender sig hurtigt til den nye syntaks at det pludselig syntes træls at skrive VB8 kode ;)