0

我记得遇到过在一个属性中声明多个 Set 处理程序的方法,但现在我不知道它是如何完成的。这很有用,因为可以分配不同的数据类型并且 Set 处理程序进行转换,但我得到了错误

'Set' 已被声明

任何人的想法?

4

2 回答 2

2

这是不可能的

能同时写这两个就好了

sQuantity = "1234"

sQuantity = 1234

有两个 setter 函数,但试图用错误的参数类型编写一个 setter 函数似乎注定要失败:-

error BC31064: 'Set' parameter must have the same type as the containing property.

如果 Visual Basic 不允许在 setter 参数类型和属性类型之间进行转换,那么就不可能有两个 setter 函数。如果 setter 函数被强制与属性具有相同的类型,那么如果有多个,它就无法知道要运行哪个!

所以我会争辩说“这不仅看起来不可能,而且实际上不可能!”

有一个解决方法

但是,您可以做的是让两个不同类型的属性更改相同的基础变量,以便您可以编写

sQuantityFromString = "1234"

sQuantityFromInt = 1234

使用

Public Shared WriteOnly Property sQuantityFromInt () As Integer

使用一个将整数作为参数的 setter 函数,并且使用两个属性 setter 函数修改相同的底层字符串成员变量。

Private Shared m_sQuantity As String = Nothing
于 2017-11-15T11:08:24.910 回答
1

据我所知,一个类属性不能有多个 Set 语句。属性不能被覆盖。

您可以使用 setter 函数(这主要是 Java 中的一种范例)并在需要时对其进行重载。然后我还建议将属性设为只读。

另一种选择是将属性定义为对象,并在集合中检查TypeOf用于设置属性的值并执行您想要的任何业务逻辑。这种方法的唯一问题是您的属性没有类型检查。

于 2013-03-12T01:25:32.570 回答