C# 重寫ToString(2)


何時需要重寫ToString

在項目中有時會看到一個類中重寫ToString()方法,剛開始不理解干嘛要重寫這個方法,今天看《改善C#程序的50種方法》這本書時正好看到了原則5:始終提供ToString()方法。不過看這本書時很不好理解,於是google了一下,現在解釋一下吧。原來有時你要自定義格式化輸出的時候就得重寫ToString()方法。

   一般類型,都是繼承自System.Object類,默認情況下,object類的ToString方法會返回當前類的類型的字符串表達形式。但也有例外!!
 DateTime,它就重寫ToString方法,DateTime類型的實例的ToString方法返回的就是一個日期的字符串表達形式,而不是DateTime類型的字符串表達形式。
 還有一種使用的情況就是,當我們有了一個Student類時,我們使用Console.WriteLine(student),將會輸出 "命名空間.Student"。這是我們不想要的,我們想要輸出時顯示這個學生的名字,那么我們就需要重寫ToString方法。

public override string ToString()
{
   reutrn "張三";
}

這樣,輸出的結果,就會是你想要的學生名稱的形式了。

 

Item8:盡量在子類中重寫ToString方法。

ToString方法是System.Object提供的一個公有的虛方法,.NET中任何類型都可繼承System.Object類型提供的實現方法,默認為返回類型全路徑名稱。在自定義類或結構中重寫ToString方法,除了可以有效控制輸出結果,還能在一定程度上減少裝箱操作的發生。

public struct User
{
    public string Name;
    public Int32 Age;

    //避免方法調用時的裝箱
    public override string ToString()
    {
        return "Name: " + Name + ", Age:" + Age.ToString();
    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM