所以你知道PHP内部函数通常FALSE在函数失败时返回一个布尔值,或者当函数成功时返回一些其他数据类型?这在VB .Net中是否可行?
例如,我们在这里说这个简单的代码
Public Function TrySomething(ByVal Param As String) \\what would go here??
If Param <> "MAGICWORD" Then
Return False
Else
Return "You Win!"
End If
End Function
Run Code Online (Sandbox Code Playgroud)
你看我想在函数失败时返回一个BOOLEAN,在函数工作时返回一个字符串.有任何想法吗?我到处寻找,当我搜索"返回多种类型"时,我发现是Tuple.
Dan说,你可以使用一个物体.但是,您必须在调用例程中检查返回的类型.
Sub Checkit()
Dim ret As Object = TrySomething("MAGICWORD")
If TypeOf ret Is Boolean Then
'dosomething
MsgBox("Nope!")
End If
If TypeOf ret Is String Then
'dosomethingelse
MsgBox("Yes, you won!")
End If
End Sub
Public Function TrySomething(ByVal Param As String) As Object
If Param <> "MAGICWORD" Then
Return False
Else
Return "You Win!"
End If
End Function
Run Code Online (Sandbox Code Playgroud)
我不会这样做,我会创建一个结构或类来完全处理我想要的东西.像这样:
Sub Checkit()
Dim ret As TryReturnStruct = TrySomething("MAGICWORD")
MsgBox(ret.Message)
If ret.Success Then
MsgBox("Do you want to play again?")
End If
End Sub
Structure TryReturnStruct
Public Success As Boolean
Public Message As String
End Structure
Public Function TrySomething(ByVal Param As String) As TryReturnStruct
Dim ret As New TryReturnStruct
If Param <> "MAGICWORD" Then
ret.Success = False
ret.Message = "Nope, not yet!"
Else
ret.Success = True
ret.Message = "You Win!"
End If
Return ret
End Function
Run Code Online (Sandbox Code Playgroud)
这对你有用:
Public Function TrySomething(ByVal Param As String) As Object
If Param <> "MAGICWORD" Then
Return False
Else
Return "You Win!"
End If
End Function
Run Code Online (Sandbox Code Playgroud)
你可以检查这样的值:
Dim a As Boolean = TrySomething("")
Dim b As String = TrySomething("MAGICWORD")
Run Code Online (Sandbox Code Playgroud)