当功能仅在参数数量上有所不同时,请避免过载

时间:2013-11-21 10:14:00

标签: vb.net overloading

我的功能如下:

Public Overloads Function(byval Par1 as Integer) as Array
dim arr_i(0) as double
arr_i(0) = Par1
Return arr_i
end function

Public Overloads Function(byval Par1 as Integer, byval Par2 as Integer) as Array
dim arr_i(1) as double
arr_i(0) = Par1
arr_i(1) = Par2
Return arr_i
End function

Public Overloads Function(byval Par1 as Integer, byval Par2 as Integer, byval Par3 as Integer) as Array
dim arr_i(2) as double
arr_i(0) = Par1
arr_i(1) = Par2
arr_i(2) = Par3
Return arr_i
End function

我的功能有点复杂,但这是主干。返回和参数类型不仅仅改变参数的数量。我试图避免由于不兼容问题导致的可选参数。

查看我的重载函数(比如我们使用循环来计算带参数的东西)每个函数中都有相同的代码,只是参数的数量发生了变化。假设我想要1到20个参数,我必须一遍又一遍地编写(或复制)相同的代码。我觉得这不是解决这个问题的最佳方法,但却无法提出更有效的方法。有没有更好的方法来实现这个?

1 个答案:

答案 0 :(得分:0)

你必须在你的情况下使用paramarray,它实际上是一种传递给函数/过程的参数。您可以按照以下方式修改代码,以满足您的需求。

'Function definition
Public Function test(ByVal ParamArray Pars() As Integer) As Integer()
    Return Pars
End Function

'Function calls
Call test(1, 2, 4, 5, 34, 34, 223, 42)
Call test(1, 2)