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 (5)

  1. int19h says:

    I apologize for the intrusion, but, looking at the full feed for blogs.msdn.com, it seems that your blog is the only one to cover VB10 new features in any amount of detail – noone else bothered even to post a short list of new stuff! Unfortunately, I cannot appreciate your posts, as I do not know French. Could you somehow prod your Redmond colleagues so that someone can make a write-up for us anglophones, similar to what Charlie Calvert and Sam Ng are doing for C# 4.0?

  2. 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

  3. int19h says:

    Yes, this is just what was needed, thank you!

  4. gaelgael5@hotmail.com says:

    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

Skip to main content