2009-04-03 6 views
6

In VB.NET auf eine boolesche Funktion, wenn Sie eine Exit Function-Zeile ausführen, gibt es false zurück?Gibt die Exit-Funktion false zurück?

+4

Das ist, warum ich nicht mag VB :) In C# zwingt der Compiler Sie, Explicity zurückzugeben. – cjk

+1

Eigentlich sagt der Compiler Sie als Warnung (und/oder visuell), wenn Sie nichts explizit zurückgeben, ich bin nicht ganz sicher, ob es möglich ist, es obligatorisch zu machen. –

Antwort

9

verlassen: Das ist richtig, mit dem Vorbehalt, dass der Name der Funktion in VB kann auch eine Variable sein, der zurückgegeben wird. Wenn Sie dies zuvor auf "true" festgelegt haben, wird "true" zurückgegeben.


Mehr vollständig, in VB.Net, wenn ich eine Boolesche Funktion haben Foo() wie so definiert:

Public Function Foo() As Boolean 
    '... 

... der Körper dieser Funktion hat eine implizite Variable auch Foo genannt, die übereinstimmt der Rückgabetyp der Funktion — in diesem Fall, aber Object, wenn der Rückgabetyp weggelassen wird (Sie sollten Option Strict verwenden, die einen Rückgabetyp erfordert). Diese implizite Variable wird initialisiert, um den Standardwert für diesen Typ zu verwenden.

Wenn Sie Return einen Wert von der Funktion, ob über Exit Function oder einfach durch das Erreichen des Endes fehlschlagen, wird stattdessen diese implizite Variable zurückgegeben. Daher gibt eine Funktion False zurück, wenn Sie Exit Function früh ohne andere Änderungen vornehmen, denn das ist der Standardwert in der impliziten Variable, die mit der Funktion verwendet wird. Sie können diese Variable aber auch zuerst auf True setzen, wenn Sie wollten, und dann würde Exit Function stattdessen True zurückgeben.

Heutzutage verwenden Leute die implizite Variable nicht oft, aber es gibt Situationen, in denen es Ihnen ein paar Codezeilen sparen kann, ohne dass etwas an Klarheit verloren geht.

+1

Möglicherweise ist dies eine Frage der Klarheit, aber das funktioniert in VB, weil diese Funktion Ausgabevariable auf false initialisiert wird und ohne explizite Rückgabe ist es diese Variable, die zurückgegeben wird – annakata

+0

Um klar zu sein, wenn ich eine Funktion habe, die den Typ long zurückgibt, 'Exit Function' gibt den Standardwert (0) zurück. Außerdem, wenn ich in meinem 'Function Foo() as Long',' Return Foo' zurückgebe, gebe ich "0" zurück. Richtig? Ich könnte "Exit Function" durch "Return Foo" ersetzen? – MetalPhoenix

2

Solange Sie diese Funktion nicht auf True gesetzt haben, bevor Sie

3

Unabhängig davon, ob dies der Fall ist (der Compiler gibt nur eine Null-Referenz-Warnung aus), sollten Sie immer noch explizit false zurückgeben, wenn auch nur zur besseren Lesbarkeit.

+0

Die tatsächliche Antwort auf die Frage ist immer noch nützlich, wenn Sie jedoch eine solche Funktion 'Exit Function' _aufräumen wollen. – Nyerguds

2

Ich mache immer "Return True" oder "Return False", um eine Methode anstelle der Exit-Anweisung zu beenden.