簡體   English   中英

從子類訪問隱藏的屬性

[英]Access hidden property from child class

有時在C#中,隱藏繼承的基類的屬性很有用,例如,當您想更改類型時。 但是,一旦隱藏了繼承的屬性,我將不知道如何讀取或寫入隱藏屬性的值。

這是一個使用動物和狗的小例子:

public enum DogBreed {
    Corgi, Pug
}
public class Animal {
    public string Breed { get; set; }
}
public class Dog : Animal {
    public new DogBreed? Breed {
        get {
            // Not working since "Breed" now refers to Dog.Breed not Animal.Breed
            if (Breed == "Corgi") return DogBreed.Corgi;
            if (Breed == "Pug") return DogBreed.Pug;
            return null;
        }
        set {
            // Also Not working for same reason as above
            if (value == DogBreed.Corgi) Breed = "Corgi";
            else if (value == DogBreed.Pug) Breed = "Pug";
            else Breed = null;
        }
    }
}

如何訪問隱藏的屬性? (動物品種)

您正在尋找base關鍵字:

public class Dog : Animal {
    public new DogBreed? Breed {
        get {
            // base.Breed refers to the hidden property
            if (base.Breed == "Corgi") return DogBreed.Corgi;
            if (base.Breed == "Pug") return DogBreed.Pug;
            return null;
        }
        set {
            if (value == DogBreed.Corgi) base.Breed = "Corgi";
            else if (value == DogBreed.Pug) base.Breed = "Pug";
            else base.Breed = null;
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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