我有继承B类的B类,两者都在C#中。它们都具有Value属性,类A的定义如下:
public object Value
{
get
{ [...] }
set
{ [...] }
}
B类的属性如下:
public new decimal Value
{
get
{ [...] }
set
{ [...] }
}
下面的代码在VB中,我们像这样使用它:
Dim var1 As new B
var1.Value = "abc"
问题在于,不是因为类B没有将Value定义为字符串而调用类A属性,而是尝试将字符串转换为十进制,然后再将其发送给类B的Value属性。 “ abc”不是有效数字,会引发异常,但是我在类A的Value属性中处理了此类值。
是否不将字符串转换为十进制并调用类A的属性而不是类B的属性?
答案 0 :(得分:2)
这是因为这里有new
关键字:
public new decimal Value
在此处使用new
会完全隐藏A
的{{1}}属性。也许您只想要Value
。