vb.net无类型参数

时间:2010-09-06 07:16:47

标签: vb.net

是否可以有任何类型的参数?这就是我的意思:

some_function(argument)
    if (argument type is string)
        do something with a string
    else if (argument type is datarow)
        do something with a data row
    ...

我发现了一些关于泛型的东西,但我不确定它是不是我想要的。

3 个答案:

答案 0 :(得分:1)

你完全可以这样做:

Sub DoSomething(ByVal arg As Object)
    If TypeOf arg Is TypeX Then
        DoSomethingX(DirectCast(arg, TypeX)
    ElseIf TypeOf arg Is TypeY Then
        DoSomethingY(DirectCast(arg, TypeY))
    End If
End Sub

但是:至少首先问自己你是否正在尝试做一些应该继承和多态的事情。

基本上这是一个很重要的词:

Public MustInherit Class BaseType
    Public MustOverride Sub DoSomething()
End Class

Public Class TypeX
    Inherits BaseType

    Public Overrides Sub DoSomething()
        ' Whatever TypeX does. '
    End Sub
End Class

Public Class TypeY
    Inherits BaseType

    Public Overrides Sub DoSomething()
        ' Whatever TypeY does. '
    End Sub
End Class

它看起来像很多打字,但是当你有BaseType类型的对象,而不是一堆If / ElseIf检查时,你就可以了做:

arg.DoSomething()

在您的情况下可能不是解决方案。只是想指出这是存在的,可能可以更好地解决您的问题(很难说没有细节)。

答案 1 :(得分:0)

一种方法是你可以使用基类型。将参数设置为Object。

some_function(argument as Object)
if (argument type is string)
    do something with a string
else if (argument type is datarow)
    do something with a data row

答案 2 :(得分:0)

只需使用overloading即可。创建具有相同名称但不同参数列表的方法。 Visual Basic .NET根据您传递的参数类型确定在编译期间调用哪个方法。

  Sub some_function(ByVal argument As String)

  End Sub
  Sub some_function(ByVal argument As DataRow)

  End Sub