在一個基類我有這樣的特性:爲什麼我不能添加一個訪問器到一個重寫屬性?
public virtual string Text
{
get { return text; }
}
我想重寫,並返回不同的文字,但我也希望能夠設置文本,所以我這樣做:
public override string Text
{
get { return differentText; }
set { differentText = value; }
}
但是這不起作用。根據set
,我得到一個紅色的波浪曲線,說我不能重寫,因爲它沒有設置存取器。爲什麼這是個問題?我該怎麼辦?
我想這樣做完全一樣的。應該是可以的。 – 2015-02-27 13:20:53
這是可能的,但需要一個「中產階級」。在許多情況下,它可能不是一個好主意,但是有一些例外情況,例如重寫抽象屬性時。基地:`公共抽象字符串文本{get; }`。中間(繼承基礎):`受保護的內部字符串文本;``公開密碼覆蓋字符串文本{get {return text; }}。子(繼承中):`public new string Text {get {return text; } set {text = value; }}。受保護的內部修改器和密封覆蓋確保封裝不會在組件外部破碎。 – AnorZaken 2015-10-11 18:31:29
@AnorZaken:這不是最重要的,那是陰影。它也不需要「中等」級別。 – Guffa 2015-10-11 19:46:38