簡體   English   中英

為什么TextWriter.Write(char)不是抽象的?

[英]Why is TextWriter.Write(char) not abstract?

TextWriter是具有一個抽象功能的抽象類- Encoding Encoding { get; } Encoding Encoding { get; } 實現也必須實現void Write(char) ,但是此函數不是抽象的-為什么? 默認實現對我來說沒有任何意義。

這是TextWriter的設計錯誤。 根據Reflector的說法,所有其他Write*方法都簡化為Write(char) 該文件說類似。 Write(char)應該是抽象的。

如果開發人員沒有注意到這一點,可能會誤導其創建一個大多數情況下都可以實現的實現,但是在編寫一個char (不常見)時,它可能什么都不做。 令人驚訝的行為。

如果您從TextWriter派生,並且知道調用方將僅使用某些重載,例如Write(string) ,則可以通過僅重寫必要的方法並忽略Write(char)來節省一些工作。 但是,這違反了Liskov替代原則。 早在設計BCL時,他們可能就沒有對SOLID原則采取嚴格的立場。

參考資料沒有啟發性:

    // Writes a character to the text stream. This default method is empty,
    // but descendant classes can override the method to provide the
    // appropriate functionality.
    //
    public virtual void Write(char value) {
    }

暫無
暫無

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

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