如何在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。
答案 0 :(得分:2)
这里的重载将不起作用,因为参数都是相同的类型,这意味着“a和b”和“a和c”的签名将是相同的。
有关详细信息,请参阅规则中列出的wikipedia article on overloading:
重载函数必须由arity或数据类型不同。
您所拥有的将完全正常工作 - 您可以完全省略参数,也可以使用:=
符号单独指定:
ABC(1)
或ABC(a:=1)
ABC(1, 2)
或ABC(a:=1, b:=2)
ABC(1, , 3)
或ABC(1, c:=3)
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