当我写:不同的静态成员的值
public class A
{
public static int v;
}
public class B : A { }
public class C : A { }
的A.v
,B.v
和C.v
值都是一样的。
如何让他们存储不同的静态值?
当我写:不同的静态成员的值
public class A
{
public static int v;
}
public class B : A { }
public class C : A { }
的A.v
,B.v
和C.v
值都是一样的。
如何让他们存储不同的静态值?
A.v,B.V和C.V的值都是一样的。
如何让他们存储不同的静态值?
你不能; A.v
,B.v
和C.v
都指向相同的静态字段,因此它们不能具有不同的值。
可能的解决方法将是B
和C
重新声明v
:
public class A
{
public static int v;
}
public class B : A
{
public static new int v;
}
public class C : A
{
public static new int v;
}
如果你这样做,A.v
,B.v
和C.v
将有效是指不同的领域,使他们能够有不同的值。
(注意new
改性剂;它告诉你故意从基类隐藏成员编译)
根据您的具体需求,faester的解决方案可能会更好。
它似乎不可能没有重新宣布他们或类似的东西。 – Yves
不要让他们静态的,而是用虚拟的只读属性,以获得相同的效果:
public class A
{
public virtual int v { get { return 1; } }
}
public class B : A { }
public class C : A
{
public override int v
{
get { return 2; }
}
}
你不能,这是静态的方面之一。 –
如果你不想要这样的效果,那你为什么从同一个类中派生出来? – jAC
http://msdn.microsoft.com/en-us/library/vstudio/79b3xss3.aspx – MahanGM