Ist es legal und möglich, den Rückgabewert in einem für den Zugriff schließlich blockieren?
Frage
Ich mag eine Zeichenfolge Usererror setzen, bevor eine Funktion zu verlassen, in Abhängigkeit von dem Rückkehrcode und Variable in der Funktion.
Im Moment habe ich:
Dim RetVal as RetType
try
...
if ... then
RetVal = RetType.FailedParse
end try
endif
...
finally
select case RetVal
case ...
UserStr = ...
end select
end try
return RetVal
Ist es möglich, Rückkehr RetType.FailedParse zu verwenden, dann ist dieser Zugang in der schließlich blockieren?
Lösung
Die einzige wirkliche Möglichkeit, dies zu tun, in C # wäre, eine Variable zu Beginn des Verfahrens zu erklären, um den Wert zu halten - d. H
SomeType result = default(SomeType); // for "definite assignment"
try {
// ...
return result;
}
finally {
// inspect "result"
}
In VB Sie könnte der Lage sein, das Ergebnis direkt zugreifen - da IIRC irgendwie es wie die oben arbeitet (mit dem Methodennamen als „Ergebnis“) sowieso. Vorab: Ich bin wirklich keine VB Person ...
Andere Tipps
Deklarieren Sie die Variable aus dem try-Block, und prüfen Sie in der schließlich blockieren, wenn es eingestellt wurde.
Ich habe mich gefragt, ob in VB man kann (legal) zu tun:
Public Function MyFunc() as integer
Try
if DoSomething() = FAIL Then
return FAIL
end if
Finally
if MyFunc = FAIL then
Me.ErrorMsg = "failed"
endif
End Try
End Function
Ich weiß Einstellung MyFunc = FAIL (als Hang-over von VB) legal ist, ist sie schreibgeschützt oder lesbar? Meine Sorge, dass dies eine schlechte Codierung als
if MyFunc = FAIL Then
ist zu ähnlich
if MyFunc() = FAIL Then
, die hat ganz andere Konsequenzen!