web-dev-qa-db-fra.com

Syntaxe: "Exit Sub" ou "Return" dans les sous-programmes VB.NET

"Exit Sub" ou "Return" semblent accomplir la même chose - quitter un sous-programme. Y a-t-il une différence dans la façon dont ils fonctionnent sous les couvertures?

C'est,

Private Sub exitNow()
    Exit Sub
End Sub

ou

Private Sub exitNow()
    Return
End Sub
53
Jeff

Du doc:

Dans une procédure Sub ou Set, l'instruction Return est équivalente à une instruction Exit Sub ou Exit Property et l'expression ne doit pas être fournie.

Ils sont donc les mêmes dans ce contexte.

64
RBarryYoung

J'ai tendance à préférer Return à Exit Sub. Parce que de temps en temps, vous passez de Sub à Function. Dans ce cas Exit Sub pourrait être converti en Exit Function, mais cela suppose qu'il y avait une affectation précédente au nom de la fonction (similaire VB 6), ce qui ne s'est probablement pas produit. Return permettrait de résoudre cette situation - si la méthode doit renvoyer une valeur, Return sans argument échouera au moment de la compilation.

14
Mike

Si vous inspectez la sortie IL des 2 instructions, ce sont les mêmes. Cependant, étant donné que "retour" est destiné à renvoyer quelque chose à l'appelant, donc à proprement parler, "Quitter Sub" est plus approprié pour une utilisation dans un Sub.

6
dipan chikani

Ils sont les mêmes dans ce contexte.

Cependant, du point de vue de la lisibilité du code, "Exit Sub" serait plus clair car le "Return" indique que quelque chose est utilisé comme sortie (ce qui n'est pas le cas avec les sous-routines).

4
Thiago Burgos
  • Tout d'abord, les procédures sont fournies avec sub, nous devons savoir que nous travaillons sur des procédures spécifiques qui ne renvoient pas de valeur spécifique avec la possibilité de passer certains paramètres spécifiques ou même sans passer de paramètre. Tel que:
  • Imprimez quelque chose ().
  • Calculez la factorielle du nombre entier CalcFact(X).
  • Effectuez certains processus pour une tâche spécifique.

  • La fonction est un processus spécifique programmé pour réaliser une tâche spécifique en passant également certains paramètres spécifiques, et elle doit renvoyer une valeur qui peut être utilisée pour terminer la tâche globale, comme la validation du nom d'utilisateur et la passe utilisateur.

En bref Sub ne renvoie pas de valeur et nous l'appelons directement "Print HelloWorld()", alors que les fonctions font comme:

  • ValidUsersNameAndPass("Johne","jOhNe13042019") 'Cela pourrait retourner une valeur booléenne.
  • ValidUsersNameAndPass("Johne","jOhNe13042019"); // Cela pourrait retourner une valeur booléenne.
1
MAMPRO