是否可以有任何类型的参数?这就是我的意思:
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
...
我发现了一些关于泛型的东西,但我不确定它是不是我想要的。
答案 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