Effective C# 提供一個有意義的ToString函數

來源:互聯網
上載者:User

在編寫自訂類型的時候,即使我們不寫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函數會有很多變化,這也許只有到真正的應用當中才能更深刻的體會到。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.