我有一个班级电话CalcArray
,其中包含一系列名为Amounts()
的双打,以及两个ints
,StartPeriod
和EndPeriod
。
用户几乎总是想要与数组中的项目进行交互,而不是期间或对象本身。理想情况下,我想:
property AnAmount() as CalcArray 'So the user can talk to the object if they need to
property AnAmount(i as Integer) as Double 'So the user can just get the value directly
这似乎有时起作用,而不是其他人。这只是一个语法问题吗?或者这样的超载是不可能的?
答案 0 :(得分:4)
您可以使用函数执行此操作,根据调用方式返回不同的函数。特别是因为你有一个参数,一个函数可能更合适:
Public Function AnAmount(Of T)(parm As SomeType) As T
使用它:
Dim n as Decimal
n = AnAmount(Of Decimal)(foo)
它非常有用,可以避免返回一个对象,然后必须使用CType来转换返回。在这种情况下,金额表示值类型,但函数将接受Point,Rectangle等作为T,因此您可能需要检查有效的类型请求。
答案 1 :(得分:-1)
您可能会遇到函数或属性不能仅因返回类型而变化的限制。通常,如果签名已更改,则输出类型也可以在过载时更改。另请注意,使用默认属性的限制需要参数。在某些情况下,类继承是个问题,可能需要明确指定阴影属性和函数来指定Shadows,Overloads,Overrides等。否则语言将禁止使用阴影。
如果这些内容未涵盖您所见过的案例,请尝试抓住问题示例并研究解决方案中相同命名属性的所有位置,并在此处报告结果。