마지막으로 블록에서 반환 값에 액세스하는 것이 합법적이고 가능합니까?

StackOverflow https://stackoverflow.com/questions/304847

문제

반환 코드와 함수의 변수에 따라 함수를 남기기 전에 userError 문자열을 설정하려고합니다.

나는 현재 가지고있다 :

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

return rettype.failedparse를 사용한 다음 마침내 블록에 액세스 할 수 있습니까?

도움이 되었습니까?

해결책

C# 에서이 작업을 수행하는 유일한 방법은 값을 유지하기위한 방법의 시작 부분에서 변수를 선언하는 것입니다.

SomeType result = default(SomeType); // for "definite assignment"
try {
   // ...
   return result;
}
finally {
    // inspect "result"
}

VB에서, 당신 ~할 것 같다 결과에 직접 액세스 할 수 있어야합니다. IIRC이므로 어쨌든 위의 메소드 이름으로 위의 것과 같이 작동합니다. 경고 : 난 진짜 VB 사람이 아닙니다 ...

다른 팁

Try Block에서 변수를 선언하고 설정된 경우 마지막으로 블록을 확인하십시오.

VB에서 (합법적으로) 할 수 있는지 궁금합니다.

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

MyFunc = Effe가 합법적이라는 것을 알고 있습니다 (VB의 교수형으로). 쓰기 전용입니까 아니면 읽기가 가능합니까? 내 우려는 이것이 코딩이 좋지 않다

if MyFunc = FAIL Then

너무 비슷합니다

if MyFunc() = FAIL Then

매우 다른 결과를 가져옵니다!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top