函数返回字符串或布尔值

时间:2012-12-14 12:06:08

标签: vb.net string winforms function boolean

我想要一个函数来返回String或Boolean。像这样:

Public Function GetString(Byval What As String) 'As... someting?
    If (What = "A") Then
        Return "String to return"
    Else if (What = "B") Then
        Return True
    End If

    Return False 'Nothing to return
End Function

我现在该怎么做?如果我问的话

If GetString("A") Then
    MsgBox(GetString())
End IF

...它返回一个字符串,当然它在将字符串转换为bool时出错。 我总是可以返回字符串并检查它的长度,但感觉很糟糕。或者我可能只是过多地使用PHP?

但有没有办法更像这样呢?如果我要求“B”我知道它会返回一个bool,如果我要求“A”我想提醒字符串是否有任何等等。

4 个答案:

答案 0 :(得分:5)

  

我现在该怎么做?

你不能。

一个函数只能返回一个类型,而不是多个。

您可以返回包含字符串和布尔值的自定义类型。

答案 1 :(得分:2)

我会使用数组列表。您可以在列表中存储所需的任何类型,然后在返回时解析它。这实际上不是如上所述的最佳实践,但是当你必须完成任务时...最终证明了手段的合理性。不建议。

Public Function GetString(Byval What As String) As ArrayList
Dim b as boolean = True 
dim myArrayList as Arraylist = New ArrayList

    If (What = "A") Then
        ArrayList.Add("String to return")
    Else if (What = "B") Then
        ArrayList.Add(b)
    End If

    Return False 'Nothing to return
End Function

以下概念证明:

 Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim a As Boolean = True
        Dim myarraylist As ArrayList = New ArrayList

        myarraylist.Add(a)
        myarraylist.Add("g")

        Debug.WriteLine(myarraylist.GetType.ToString)
        Debug.WriteLine(myarraylist(0).GetType.ToString)
        Debug.WriteLine(myarraylist(1).GetType.ToString)

        If myarraylist(0).GetType.ToString = "System.string" Then
            Debug.WriteLine("Function returned a String")
        ElseIf myarraylist(0).GetType.ToString = "System.boolean" Then
            Debug.WriteLine("Function returned a Boolean")
        End If

    End Sub

答案 2 :(得分:1)

您可以返回Object,但函数返回2种数据类型被认为是非常糟糕的形式。

答案 3 :(得分:0)

Oded所述,您不能从函数返回多个参数。

您在代码示例中所做的事情并不太清楚,但您可以查看passing parameters by reference。正如答案所指出的,通过引用传递参数对于:

非常有用
  

当您想要返回操作的状态或状态以及操作的结果时。

这就是int.TryParse和类似方法的工作原理。