juillet
2007
En VB, quand on appelle une méthode sans paramètre, on n’est pas obligé de mettre des parenthèses.
Inversement, quand on appelle une propriété, on peut en mettre.
Cette dernière remarque est logique vu que, en VB, une propriété peut prendre des paramètres. (Soit dit en passant, ça explique pourquoi la méthode GetValue de la classe PropertyInfo prend l’instance bien sûr mais aussi un tableau d’objet.)
Du coup, dans le cas où on aurait une propriété de type un delegate qui ne prend pas de paramètre :
Public Property MyDelegateMethod() As MyDelegate
Get
[...]
End Get
Set(ByVal value As MyDelegate)
[...]
End Set
End Property
On ne peut pas faire :
ChangelastNameOnEnterMethod()
Pour lancer le delegate. Pour cela, on appelera la méthode Invoke sur notre propriété.
MyDelegateMethod.Invoke()
A notre que si notre delegate avait pris des paramètres, il faudrait quand même passer par la méthode Invoke. En revanche, si le delegate est soit un field, soit un paramètre d’une méthode, on peut l’appeler directement :
Public Sub Test(ByVal test As MyDelegate)
test("")
End Sub