代码之家  ›  专栏  ›  技术社区  ›  Tola

当有两种可能的返回类型时,声明函数的返回类型

  •  1
  • Tola  · 技术社区  · 16 年前

    我有以下声明,我想将其转换为公共共享功能:

    If isEmployee Then
    
        Dim employeeInstance As New Employee
        employeeInstance = GetEmployeeInstanceByUserId(userId)
        Return employeeInstance 
    
    Else
    
        Dim studentInstance As New Student
        studentInstance = GetStudentInstanceByUserId(userId)
        Return studentInstance 
    
    End If
    

    公共共享函数GetWorkerInstance(ByVal IsEmployee作为布尔值)为…(不确定在此处写入什么内容)…

    有两种可能的返回类型。我不确定应该为函数返回类型声明什么。

    有什么建议吗?谢谢您。

    2 回复  |  直到 16 年前
        1
  •  2
  •   Oded    16 年前

    这是最简单的,如果 Employee Student 从一个父类(基类或接口)派生的类,然后可以将其用作返回类型。

    不能在一个函数上声明不同的返回类型,也不能创建返回不同类型的重写,因为方法签名解析不考虑返回类型。

        2
  •  0
  •   dbasnett    16 年前

    通用的

    Private Class foo
        Dim s As String = "FOO"
    End Class
    Private Class bar
        Dim s As String = "BAR"
    End Class
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim o As Object = GetWorkerInstance(True)
        If TypeOf o Is foo Then
            Stop
        Else
            Stop
        End If
    End Sub
    Public Shared Function GetWorkerInstance(ByVal isEmployee As Boolean) As Object
        If isEmployee Then Return New foo Else Return New bar
    End Function
    
    推荐文章