Frage

Sowohl „Exit Sub“ oder „Return“ scheint das Gleiche zu erreichen - ein Unterprogramm verlassen. Gibt es einen Unterschied, wie sie unter der Decke arbeiten?

Das heißt,

Private Sub exitNow()
    Exit Sub
End Sub

oder

Private Sub exitNow()
    Return
End Sub
War es hilfreich?

Lösung

Aus dem Dokument:

  

In einem Sub oder Set Prozedur, die Return-Anweisung entspricht eine Exit Sub oder Exit-Property-Anweisung und Ausdruck muß nicht vorgelegt werden.

Sie sind also die gleichen in diesem Zusammenhang.

Andere Tipps

Ich neige dazu, Return über Exit Sub bevorzugen. Denn ab und zu Ihr von Sub ändern Function. In diesem Fall Exit Sub werden könnte, um Exit Function umgewandelt, aber dies geht davon aus, dass es eine vorherige Zuordnung zu den Funktionsnamen (gleich VB 6) war, die höchstwahrscheinlich nicht der Fall ist. Return würde diese Situation fangen -., wenn die Methode sollte einen Wert zurückgeben, Return ohne Argument wird bei der Kompilierung fehlschlagen

Wenn Sie die IL Ausgabe der 2-Anweisungen überprüfen, sind sie gleich. da ‚Rückkehr‘ für ist jedoch gemeint, etwas zurück zu dem Anrufer drückt, so genau genommen, ‚Exit Sub‘ ist besser geeignet für die in einem Sub verwenden.

Es ist die gleiche in diesem Zusammenhang.

Doch aus der Lesbarkeit der Codes Sicht „Exit Sub“ wäre klarer, da das „Return“ zeigt an, dass etwas Wert etwas als Ausgang verwendet wird (was nicht der Fall mit Sub-Routinen ist).

  • Zu allererst kommt Verfahren mit Unter, sollten wir wissen, dass wir auf spezifische Verfahren arbeiten, die nicht einen bestimmten Wert mit der Fähigkeit, vorbei an einigen spezifischen Parameter zurückgeben oder sogar jeden Parameter ohne Umweg. Wie zum Beispiel:
  • Drucken etwas ().
  • Berechnen Sie die Fakultät von Integer-Zahl CalcFact(X).
  • Haben einige Prozesse für eine bestimmte Aufgabe.

  • Die Funktion ist ein spezifischer Prozess eine bestimmte Aufgabe zu erreichen programmiert, indem auch einige spezifische Parameter übergeben, und es hat einen gewissen Wert zurückkehren, die verwendet werden können, um die Gesamtaufgabe, wie die Validierung der Benutzernamen und Benutzer zu vervollständigen übergeben.

Kurz Sub Nicht Wert zurück und wir nennen es direkt "Print HelloWorld()", während Funktionen tun wie:

  • ValidUsersNameAndPass("Johne","jOhNe13042019") "Dies könnte einen Booleschen Wert zurück.
  • ValidUsersNameAndPass("Johne","jOhNe13042019"); // Dies könnte einen Booleschen Wert zurück.

Zwar gibt es Ausnahmen wie Wache Klauseln ist in den meisten Fällen Ich würde entweder ein Zeichen, dass das Verfahren zu lang ist.

Ich wollte bestätigen, dass sie das gleiche in Lambda-Ausdrücke wirken auch, und sie tun:

Sub test()

    Dim a As Action = Sub() Exit Sub
    Dim b As Action = Sub() Return

    a()
    b()

    MsgBox("Yes they do!") 
 End Sub
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top