-1

我正在使用一个涉及参数传递的过程,并且传递的参数是一个变量。因为我已经明确声明了另一个参数的数据类型,所以我需要对这个做同样的事情。我将参数声明为什么数据类型,就好像它是一个变量一样?谢谢

4

2 回答 2

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

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

您需要使用它的类型可能有限。例如FontPoint并且Rectangle可能没有任何意义。EvenDate是可疑的,因为您不能以与 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),但作为传递任何类型的通用方法,这不是一个好主意:在内部,您可能必须有一个大的 If/Else以自己的方式处理不同的类型。

永远不建议关闭Option Strict,因为可能会发生各种不需要的类型转换。

于 2014-07-11T00:17:43.910 回答
0

在 VB.NET 中,您可以使用 Object 作为类型,但 Option Strict Off。在这种情况下,您可以传递任何类型的参数。有关更多信息,请参阅:https ://stackoverflow.com/a/2890023/3660930

于 2014-07-10T23:30:37.117 回答