我已經搜索谷歌和本網站以找到答案。我也在課堂上讀過它,但我仍不明白它是如何應用的。ToString()方法在類中被重寫和格式化?
這是我所知道的:
它是用來顯示什麼對象知道本身。
它可以用來格式化輸出關於它自己的知識。
它被使用的方法重寫。
我已經搜索谷歌和本網站以找到答案。我也在課堂上讀過它,但我仍不明白它是如何應用的。ToString()方法在類中被重寫和格式化?
這是我所知道的:
它是用來顯示什麼對象知道本身。
它可以用來格式化輸出關於它自己的知識。
它被使用的方法重寫。
認爲你有這樣一個類:
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基本關鍵字。一旦你得到你父母的字符串數據,可以追加派生類的自定義信息「
好的。 string.Format部分來自哪裏? – 2011-04-14 02:50:44
除了上面顯示的內容之外,我喜歡覆蓋ToString()用於調試目的。當您在調試模式下運行並懸停在對象上或觀察對象等時,它會使用ToString()來格式化顯示內容。 – 2011-04-14 02:52:12
@Justin string.format來自System命名空間。 – 2011-04-14 02:52:37
覆蓋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;
}
}
您的類重寫的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);
}
所有.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上讀到。
我不太清楚你在這裏問什麼? – 2011-04-14 02:49:19
@Kyle我想我正在學習如何使用String,可能與我的書有所不同。有一些我錯過了,我希望其中一個答案會有幫助。 – 2011-04-14 02:53:30