2011-04-14 43 views
6

我已經搜索谷歌和本網站以找到答案。我也在課堂上讀過它,但我仍不明白它是如何應用的。ToString()方法在類中被重寫和格式化?

這是我所知道的:

  • 它是用來顯示什麼對象知道本身。

  • 它可以用來格式化輸出關於它自己的知識。

  • 它被使用的方法重寫。

+0

我不太清楚你在這裏問什麼? – 2011-04-14 02:49:19

+1

@Kyle我想我正在學習如何使用String,可能與我的書有所不同。有一些我錯過了,我希望其中一個答案會有幫助。 – 2011-04-14 02:53:30

回答

16

認爲你有這樣一個類:

public class Person 
{ 
    public string FirstName { get; set;} 
    public string LastName { get; set;} 
    private string age; 
} 

使用此:

public override string ToString() 
{ 
    return string.Format("[First Name: {0}; Last Name: {1}; Age: {2}]", FirstName, LastName, age); 
} 

將揭示類的所有內部。實際上,它最好用於以預格式化的方式快速檢索類的公共字段(從而有效地將封裝在類中的數據轉換爲字符串)。

另外這裏是一本非常有用的建議,從書籍Pro C#2010和.NET 4平臺:「您創建的許多類(和結構)可以從覆蓋ToString()中受益,以便返回字符串文本表示類型的當前狀態,這對於調試的目的非常有用(除其他原因外)你如何選擇構造這個字符串是個人選擇的問題;然而,推薦的方法是將每個名稱/值對分隔開分號並將整個字符串包裝在方括號中。但是,請記住正確的ToString()重寫也應該解釋定義在繼承鏈上的任何數據。當您爲擴展自定義基類的類重寫ToString()時,業務的第一順序是從您的父母我們獲取ToString()值ing基本關鍵字。一旦你得到你父母的字符串數據,可以追加派生類的自定義信息「

+0

好的。 string.Format部分來自哪裏? – 2011-04-14 02:50:44

+1

除了上面顯示的內容之外,我喜歡覆蓋ToString()用於調試目的。當您在調試模式下運行並懸停在對象上或觀察對象等時,它會使用ToString()來格式化顯示內容。 – 2011-04-14 02:52:12

+0

@Justin string.format來自System命名空間。 – 2011-04-14 02:52:37

1

覆蓋ToString()方法:。

public class Test 
{ 
    public string FirstName { get; set; } 

    public string LastName { get; set; } 

    public override string ToString() 
    { 
     // Do your formatting here 
     return LastName + ", " + FirstName; 
    } 
} 
1

您的類重寫的ToString()說我有一個類與m_nDays,m_nHours,m_nMinutes ...然後我可以覆蓋toString()方法如下:

public override string ToString() 
{ 
    return string.Format("{0,5}d - {1:00}:{2:00}", m_nDays, m_nHours, m_nMinutes); 
} 
2

所有.NET類的基類是object類型的對象類爲您提供的默認實現。默認情況下只打印出類的名稱,除非該類已覆蓋ToString()方法來打印其他內容。這個類的名字並不是特別有用,所以在您編寫的任何類中覆蓋ToString()通常是一個好習慣,因爲它爲您的類提供人類可讀的表示方式很有用。當你想要檢查你的類的實例時,調試器實際上會默認使用你的ToString()實現。

在你的類,所有你需要做的就是添加這個方法:

public override string ToString() 
{ 
    // return a string that has something to do with your class 
} 

例子:

public class Person 
{ 
    public string FirstName {get;set;} 
    public string LastName {get;set;} 
    public int Age {get;set;} 

    public override void ToString() 
    { 
     // return whatever makes sense here... 
     return string.Format("[Person: FirstName={0}, LastName={1}, Age={2}]", FirstName, LastName, Age); 
    } 
} 

注意string.Format方法是創建一個字符串的只是一種方法。 string.Format的第一個參數是「格式」,它可以包含文本文本以及您將作爲其他參數提供的值的佔位符。上面的{0}{1}{2}是在格式之後傳遞的FirstName,LastName和Age參數的佔位符。如果你想知道更多,我會在string.Format上讀到。

相關問題