我正在使用涉及参数传递的过程,并且传递的参数是变量。因为我已经显式声明了另一个参数的数据类型,所以我需要对此进行相同的操作。我将参数声明为什么数据类型,就好像它是变量一样? 感谢
答案 0 :(得分:2)
你正在做什么以及你正在处理什么类型的例子会很好。您可以实现Overloading
以提供不同的参数类型:
Friend Function FooBar(n As Integer) As Integer
Friend Function FooBar(n As Int64) As Integer
Friend Function FooBar(n As Short) As Integer
编译器将选择与传递的数据类型匹配的函数。在内部,他们可以根据传递的类型做任何事情,然后调用另一个程序来执行他们共同的任何事情。
您可能需要使用有限数量的类型。例如Font
,Point
和Rectangle
可能毫无意义。即使Date
也是可疑的,因为你不能以与Int或Long相同的方式来约会。 String
也不太可能需要,因为如果FooBar(CInt(someString))
包含有效整数或其他任何内容,您可以将其作为Private Function FooBar(Of T)(parm As T) As Integer
' called as:
ziggy = FooBar(Of Int32)(n)
zoey = FooBar(Of String)(str)
传递。
您还可以使用泛型来告诉函数您传递的内容:
Private Function FooBar(Of T)(parm As T) As T
如果函数返回根据传递的参数Type
而变化,则甚至可能是Object
。这有很多用途(其中一个用于避免将参数传递为Option Strict
),但作为传递任何类型的通用方法,这不是一个好主意:在内部,你可能需要有一个很大的If / Else来按自己的方式处理不同的类型。
由于可以进行各种不需要的类型转换,因此永远不建议关闭{{1}}。
答案 1 :(得分:0)
在VB.NET中,您可以使用Object作为类型但使用Option Strict Off。在这种情况下,您可以传递任何类型的参数。 有关更多信息,请参阅:https://stackoverflow.com/a/2890023/3660930