Effective C#原則5:始終提供ToString()

來源:互聯網
上載者:User

在.Net世界裡,用得最多的方法之一就是System.Object.ToStrying()了。你 應該為你所有的客戶寫一個“通情達理”的類(譯註:這裡是指這個 類應該對方便使用)。要麼,你就迫使所用類的使用者,去使用類的屬性並添加一 些合理的易讀的說明。這個以字串形式存在,關於你設計的類的說明,可以很 容易的向你的使用者顯示一些關於對象的資訊到:Windows Form裡,Web Form裡, 控制台輸出。這些字元說明可以用於調試。你寫的任何一種類型,都應該合理的 重寫這個方法。當你設計更多的複雜的類型時,你應該實現應變能力更強的 IFormattable.ToString(). 承認這個:如果你不重寫(override)這個常規的方 法,或者只是寫一個很糟糕的,你的客戶將不得不為你修正它。

System.Object版的ToString()方法只傳回型別的名字。這並沒有太多有 用的資訊:“Rect”,“Point”,“Size”並 不會如你所想的那樣顯示給你的使用者。但那隻是在你沒有為你的類重寫 ToString()方法時得到的。你只用為你的類寫一次,但你的客戶卻會使用很多次 。當你設計一個類時,多添加一點小小的工作,就可以在你或者是其他人每次使 用時得到回報。

(譯註:廢話!)

============= =========

這一原則就不翻譯了,看的有點鬱悶。就是 ToString()的幾個重寫版本。以及一些格式化輸出。我覺得本書不應該討論這些 入門級的內容,所以只是讀了一遍,就沒有全部翻譯。

大家知道要重寫 它就行了,最好是提供幾個重載版本。回頭有時間再翻譯這一原則的其它內容。

給一點個人建議,一般不會在一個類的ToString上提供很多的說明,給 一個名字就已經足夠了,然後加一個SDK協助。更多時候,在後面新增成員類的 說明。我就在一個第三方庫的ToString上看到很嚴謹的結構,都是在類名後面, 添加一些內容和重要屬性的說明。

=========================================補譯:

讓我們來 考慮一個簡單的需求:重寫System.Object.ToString()方法。你所設計的每一個 類型都應該重寫ToString()方法,用來為你的類型提供一些最常用的文字說明。 考慮這個Customer類以及它的三個成員(fields)(譯註:一般情況,類裡的 fields譯為成員,這是物件導向設計時的概念,而在與資料庫相關的地方,則是 指欄位):

public class Customer
{
  private string  _name;
  private decimal _revenue;
  private string  _contactPhone;
}

預設繼承自System.Object的ToString()方法會返回"Customer"。 這對每個人都不會有太大的協助。就算ToString()只是為了在調試時使用,也應 該更靈活(sophisticated)一些。你重寫的ToString()方法應該返迴文字說明, 更像是你的使用者在使用這個類一樣。在Customer例子中,這應該是名字:

public override string ToString()
{
 return _name;
}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.