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
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
Public Property Nom As String Public Property Prénom As String
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() }}
.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() }}