Pergunta

Desejo definir uma string do usuário antes de deixar uma função, dependendo do código de retorno e da variável na função.

Eu tenho atualmente:

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

É possível usar o retorno Rettype.FailedParse e depois acessar isso no bloco finalmente?

Foi útil?

Solução

A única maneira real de fazer isso em C# seria declarar uma variável no início do método para manter o valor - ou seja,

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

Em VB, você poderia Ser capaz de acessar o resultado diretamente - como o IIRC, ele meio que funciona como o acima (com o nome do método como "resultado") de qualquer maneira. Advertência: Eu sou verdade Não é uma pessoa VB ...

Outras dicas

Declare a variável fora do bloco de tentativa e verifique o bloco Finalmente se tiver sido definido.

Eu queria saber se no VB alguém poderia (legalmente) fazer:

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

Eu sei que definir myfunc = falha é legal (como uma hanguarda do VB), é apenas uma gravação ou legível? Minha preocupação é que isso seja fraco codificação como

if MyFunc = FAIL Then

é muito semelhante a

if MyFunc() = FAIL Then

que tem consequências muito diferentes!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top