2014-07-10 105 views
-1

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

+0

向我们展示代码。 – ja72

回答

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,PointRectangle可能没有意义。即使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,因为可能会发生各种不需要的类型转换。