《Effective C#》Item 5:提供一個有意義的ToString函數

在編寫自定義類型的時候,即使我們不寫ToString函數,系統也會自動提供ToString函數,例如:

    public class clsUserInfo

    {

        private string strUserName;

        ……

    }

 

不過系統所提供ToString函數,並不做太多的事情,無法真實的反映當前對象的一些屬性,就如上這段代碼,調用ToString返回的結果和GetType後轉換成String是一樣的。那麼這樣的返回值對於調用者來說沒有太多的意義。

 

爲了能提供一個有意義的ToString函數,則需要重載ToString函數來實現一個面向此對象的ToString函數。舉例說明,對於上面clsUserInfo這個類型,如下這種寫法會使ToString函數更有意義。

    public class clsUserInfo

    {

        private string strUserName;

        ……

        public override string ToString()

        {

            return string.Format( "User name:{0}", strUserName );

        }

    }

 

提供一個有意義的ToString函數,對於進行調試或者發佈此類都是很有用,因爲這種做法是最簡便的方法,相對於訪問類的成員屬性然後再組合字符串不過大家寫代碼的時候,包括我在內,往往忽略了去提供一個有意義的ToString函數,這點看來要在今後的編碼中進行改善。

 

除了重載系統提供的ToString函數外,在C#中還可以繼承IFormattable接口,來提供更復雜的ToString函數,至於這方面,我不想多說,因爲繼承了接口,提供的ToString函數會有很多變化,這也許只有到真正的應用當中才能更深刻的體會到。

發佈了87 篇原創文章 · 獲贊 9 · 訪問量 100萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章