簡體   English   中英

C#總是從基類調用基方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM