PDC 2008 : Visual Basic 10 (VB10) et les "Auto Properties"

En Visual Basic, lorsqu'on veut déclarer une propriété dans une classe, voici la syntaxe habituellement utilisée :

Public Class Client

    Private interneNom As String
Public Property Nom() As String
Get
Return interneNom
End Get
Set(ByVal value As String)
interneNom = value
End Set
End Property

    Private internePrénom As String
Public Property Prénom() As String
Get
Return internePrénom
End Get
Set(ByVal value As String)
internePrénom = value
End Set
End Property

End Class

Bonne nouvelle, à partir de Visual Basic 10, voici que, comme en C#, les "Auto Properties" sont maintenant implémentées ! Le code précédent se résume désormais à :

Public Class Client

    Public Property Nom As String
Public Property Prénom As String

End Class

Evidemment, à la compilation, le compilateur VB (vbc.exe) va émettre pour vous le code que vous n'avez plus à écrire :

.class public auto ansi Client
extends [mscorlib]System.Object
{
.method public specialname rtspecialname instance void .ctor() cil managed
{
.custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor()
.maxstack 8
L_0000: ldarg.0
L_0001: call instance void [mscorlib]System.Object::.ctor()
L_0006: nop
L_0007: nop
L_0008: ret
}

    .property instance string Nom
{
.get instance string Demos_VB10.Client::get_Nom()
.set instance void Demos_VB10.Client::set_Nom(string)
}

    .property instance string Prénom
{
.get instance string Demos_VB10.Client::get_Prénom()
.set instance void Demos_VB10.Client::set_Prénom(string)
}

    .field private string _Nom
{
.custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor()
}

    .field private string _Prénom
{
.custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor()
}
}

Comments

  • Anonymous
    November 02, 2008
    The comment has been removed

  • Anonymous
    November 02, 2008
    NB. It's also possible to have initializers on the auto-properties: Public Property Noms As New List(Of String) From {"Juliette", "Jacques", "Lucien"} Public Property Etats As IEnumerable(Of String) = {"france", "grande bretagne"} Public Property Size As Integer = 31

  • Anonymous
    November 02, 2008
    Hi int19h, Is the following link a possible answer your question? http://blogs.msdn.com/vbteam/archive/2008/11/02/vb-2010-unveiled-at-pdc-2008-lisa-feigenbaum.aspx

  • Anonymous
    November 04, 2008
    Yes, this is just what was needed, thank you!

  • Anonymous
    January 04, 2009
    c'est tout cool toutes ces ameliorations. J ai pas vu pour la fonction yeld return si t as une info je suis preneur. merci