在.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;
}