如何在vb.net中避免使用2个可选参数?

时间:2015-09-02 11:05:27

标签: .net vb.net syntax overloading optional-parameters

如何在vb.net中使用2个可选参数来避免功能?
如果参数名称用于调用函数,该怎么办? 例如:

Public Function ABC(ByRef a As Integer, Optional b As Integer = 0, Optional c As Integer = 0) As Integer
    'do something  
End Function

在这种情况下如何进行重载?
情景是a,a和b,a和c以及a,b,c。

2 个答案:

答案 0 :(得分:2)

这里的重载将不起作用,因为参数都是相同的类型,这意味着“a和b”和“a和c”的签名将是相同的。

有关详细信息,请参阅规则中列出的wikipedia article on overloading

  

重载函数必须由arity或数据类型不同。

您所拥有的将完全正常工作 - 您可以完全省略参数,也可以使用:=符号单独指定:

  • a ABC(1)ABC(a:=1)
  • a和b ABC(1, 2)ABC(a:=1, b:=2)
  • a和c ABC(1, , 3)ABC(1, c:=3)
  • a,b,c ABC(1, 2, 3)ABC(a:=1, b:=2, c:=3)

答案 1 :(得分:0)

无论如何:我假设,可选整数的默认值为零。

你最好不要使用可选参数,而是重载。

问题仅针对a / c使用a / b,因为参数的数量和类型是相同的。 对于其中一种情况,重载必须具有不同的名称(此处:ABCopt

无论如何,每个重载只是一个单行调用主函数

Public Function ABC(a as int)
    Return ABC(a, 0, 0)
End Function

Public Function ABC(a as int, b as int)
    Return ABC(a, b, 0)
End Function

Public Function ABCopt(a as int, c as int)
    Return ABC(a, 0, c)
End Function

Public Function ABC(a as int, b as int, c as int)
    ' Do something with a, b, c
    ' ...
End Function