我不明白以下现象,有人可以解释我,请问我错了什么?继承和静态属性
public class BaseClass
{
public BaseClass()
{
BaseClass.Instance = this;
}
public static BaseClass Instance
{
get;
private set;
}
}
public class SubClassA : BaseClass
{
public SubClassA()
: base()
{ }
}
public class SubClassB : BaseClass
{
public SubClassB()
: base()
{ }
}
class Program
{
static void Main(string[] args)
{
SubClassA a = new SubClassA();
SubClassB b = new SubClassB();
Console.WriteLine(SubClassA.Instance.GetType());
Console.WriteLine(SubClassB.Instance.GetType());
Console.Read();
}
}
我的理解,编译器应生成通过继承一个新的类型,SubClassA和SubClassB真的是自己的类型与自己的静态变量。但是,似乎该类的静态部分不是被继承的,而是被引用的 - 我得到什么错误?
我不明白为什么继承只适用于情况,但我必须接受它。谢谢你提供的信息。 – 2010-09-23 08:17:55
在PHP和Delphi中实现相同的行为 – 2010-11-22 09:11:02
@VladislavRastrusny:我不知道它是如何在2010年。但现在在2016年,在PHP中有'self ::'和'static ::'。 – 2016-10-22 08:30:09