当最初使用重载修饰符移植VB代码时,如何避免在C#中隐藏基类型成员?

当最初使用重载修饰符移植VB代码时,如何避免在C#中隐藏基类型成员?,c#,vb.net,porting,C#,Vb.net,Porting,然而,我在其他地方发现,对于其重载关键字,情况并非如此,至少在继承上下文中是如此。也就是说,采用以下代码: Public Interface IParent Property SomeBool As Boolean End Interface Public Interface IChild Inherits IParent Overloads Property SomeBool As Boolean End Interface 乍一看,在移植接口IChild时

然而,我在其他地方发现,对于其
重载
关键字,情况并非如此,至少在继承上下文中是如此。也就是说,采用以下代码:

Public Interface IParent

    Property SomeBool As Boolean

End Interface

Public Interface IChild
    Inherits IParent

    Overloads Property SomeBool As Boolean

End Interface
乍一看,在移植接口
IChild
时,似乎没有一种明确的方法能够真正捕获C语言中的确切含义,而
重载
没有某种等价物。如果您尝试这样做:

public interface IChild : IParent
{
    bool SomeBool { get; set; }
}
那么您可能会收到如下警告:

“IChild.IsDefaultValue”隐藏继承的成员“IParent.IsDefaultValue”。如果要隐藏,请使用新关键字

new
重载正好相反。如果没有一个等价的关键字,您如何确保它被正确移植


虽然这个问题涉及类和接口,但接口的定义阻止您通过实现来模拟它。

文档:

阴影和重载。
重载也可用于阴影
基类中的现有成员或重载成员集。什么时候
如果使用
重载
,则使用 与基类成员具有相同的名称和参数列表, 并且您不提供
阴影
关键字

资料来源:


因此,当用于阴影时,
new
将是等效的。

来自文档:

阴影和重载。
重载也可用于阴影
基类中的现有成员或重载成员集。什么时候
如果使用
重载
,则使用 与基类成员具有相同的名称和参数列表, 并且您不提供
阴影
关键字

资料来源:


因此,当用于阴影时,
new
将是等效的。

既然子属性
SomeBool
与父属性具有相同的签名,那么
重载
修饰符不是真的做了与
阴影
修饰符相同的事情吗?请参阅的答案。由于子属性
SomeBool
与父属性具有相同的签名,因此
重载
修饰符不与
阴影
修饰符实际执行相同的操作吗?请参阅的答案。事实上,
new
修饰符在C#中与VB.NET的
重载
的对应程度甚至比它与
阴影
的对应程度更高。事实上,阴影概念在C#Ref:事实上,
new
修饰符在C#中与VB.NET的
重载
的对应程度甚至比与
阴影
的对应程度更高。事实上,阴影概念在C#Ref中不存在: