传递不同类型的参数

时间:2014-07-10 23:21:36

标签: vb.net dynamic-variables

我正在使用涉及参数传递的过程,并且传递的参数是变量。因为我已经显式声明了另一个参数的数据类型,所以我需要对此进行相同的操作。我将参数声明为什么数据类型,就好像它是变量一样? 感谢

2 个答案:

答案 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

编译器将选择与传递的数据类型匹配的函数。在内部,他们可以根据传递的类型做任何事情,然后调用另一个程序来执行他们共同的任何事情。

您可能需要使用有限数量的类型。例如FontPointRectangle可能毫无意义。即使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