为什么不调用父方法?

时间:2018-06-28 17:36:55

标签: c# vb.net inheritance

我有继承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的属性?

1 个答案:

答案 0 :(得分:2)

这是因为这里有new关键字:

public new decimal Value

在此处使用new会完全隐藏A的{​​{1}}属性。也许您只想要Value