Comme le dit le titre. D'après ce que je peux voir en ligne, le mot-clé Overloads est optionnel mais y a-t-il un moment où cela est nécessaire? Il semble même être une erreur lorsqu'il est utilisé dans un module.Le mot clé 'Overloads' est-il déjà requis dans VB.Net?
Répondre
Non, ce n'est pas nécessaire. Vous pouvez surcharger les méthodes et les propriétés sans le mot clé Overloads
. Toutefois, si vous utilisez le mot clé Overloads
ou Overrides
pour une surcharge d'une méthode, vous devez l'utiliser pour toutes les autres surcharges de cette méthode dans la classe.
Vous pouvez utiliser le mot-clé Overloads
au lieu du mot-clé Shadows
pour masquer une méthode héritée avec la même signature. Ensuite, vous devez utiliser l'un des mots-clés, ils ne sont pas tous deux facultatifs. Vous n'avez pas besoin d'utiliser le mot-clé Overloads pour spécifier une méthode surchargée alors que vous êtes dans la même classe.
Voir [Ombres vs surcharges dans VB.NET] (http : //stackoverflow.com/questions/2515037/shadows-vs-overloads-in-vb-net) pour plus d'informations. –
Difficile à croire que cela n'a pas été corrigé après toutes ces années. 'Overload' n'est pas toujours optionnel - si une autre méthode du même nom dans la même classe remplace une méthode de classe de base, alors 'Overloads' est nécessaire. –
@DaveDoknjas: Lire le deuxième paragraphe. – Guffa
C'est ainsi que C# gère la surcharge - il n'y a pas de mot-clé Overloads en C#.
Mais en utilisant le mot-clé Overloads, a tendance à être plus lisible. Pour plus d'informations, consultez this blog post.
Cet article de blog est maintenant un lien mort :-( –
Il n'y a qu'un seul cas où le mot-clé Overloads
est obligatoire. Si une méthode a le mot clé Overloads
alors toute nouvelle méthode du même nom dans le type doit également avoir Overloads
En plus de ce cas, le mot-clé est facultatif.
Dans l'intérêt de l'exactitude, je fais cette réponse très tardive depuis que j'ai remarqué que les réponses existantes sont tout simplement incorrectes. Les «surcharges» sont certainement nécessaires dans certains cas, le plus souvent lorsqu'une autre méthode du même nom remplace une méthode de classe de base, comme dans l'exemple suivant - le code ne compile pas si le mot clé Overloads est supprimé:
Public Class One
Public Overridable Sub method()
End Sub
End Class
Public Class Two
Inherits One
Public Overrides Sub method()
End Sub
Public Overloads Sub method(ByVal i As Integer)
End Sub
End Class
Les réponses existantes ne sont pas incorrectes, vous ne les avez pas lues assez attentivement. – Guffa
Bizarrement, il y a des moments où vous ne pouvez pas utiliser le mot-clé Overloads
. Par exemple:
Module MyModule
Overloads Sub MySub(Param1 As String)
End Sub
Overloads Sub MySub(Param1 As String, Param2 As Integer)
End Sub
End Module
Le compilateur génère une erreur "Utilisation inappropriée du mot clé 'Overloads' dans un module".
Vous ne savez pas pourquoi, car vous pouvez toujours surcharger la méthode comme d'habitude.
Cette [page] (http://msdn.microsoft.com/en-us/library/8syxdc22 (v = vs.90) .aspx) sur le MSDN répertorie les mots-clés qui ne peuvent pas être utilisés dans un module. – Hornbydd
duplication possible du mot clé ["Overloads" dans VB.NET] (http://stackoverflow.com/questions/1173257/overloads-keyword-in-vb-net) – Sheridan