[英]C# always call a base method from the base class
假設我們具有以下類:
class A {
public virtual int Number { get { return 1; } }
public int Foo(){
return Number;
}
}
class B : A{
public override int Number { get { return 2; } }
}
不出所料,如果我在B類的實例上調用Foo方法,我將得到2。是否可以以始終使用基本A.Number屬性(和返回1)? 就像是:
public int Foo(){
return A.Number;
}
您試圖將“真實”功能放入虛擬成員中,並使非虛擬成員以非虛擬方式公開它。 那不是真的行得通。 就是說,您要做的就是顛倒這個概念:
class A
{
public virtual int Number { get { return Foo(); } }
public int Foo()
{
return 1;
}
}
“真實”定義在非虛擬成員中,虛擬成員簡單地調用它。 這樣可確保您只編寫一次功能,同時仍在虛擬和非虛擬庄園中公開該功能。
您可以將“ base”用於類A的使用方法和屬性。
class B : A
{
public override int Number { get { return 2; } }
public new int Foo()
{
return base.Number;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.