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