當我寫:不同的靜態成員的值
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