0
考虑下面的类:为什么此警告说静态成员正在“继承”?
public class A
{
}
public class B
{
public static A StaticA { get; set; }
}
public class C : B
{
public static A StaticA { get; set; }
}
,这将抛出一个警告:
'C.StaticA' 隐藏继承成员 'B.StaticA'。如果需要隐藏,请使用新关键字。
我可以通过添加new
关键字摆脱了警告,因为我说:
public static new A StaticA { get; set; }
但是我为什么要?为什么静态成员被继承? 就我而言,静态成员被绑定到一个特定的类型,而不是一个实例。
但是,警告确实说“继承成员”,所以这些静态属性似乎是在事实上继承。
这是为什么?不是针对OOP原则的静态继承?
我不认为这是重复的。也许我应该重新说明我的问题,但是我问为什么警告使用“继承成员”这个词,事实上,静态成员**没有被继承**,从子类访问它们只是合成糖。 –