2012-04-09 64 views
6

有時,當我調用類的.ToString()方法時,它會返回該類的完全限定名稱。但對於某些類的/結構(如Int32),它會返回一個字符串對象(整數值)的對應字符串。這是否意味着Int32類會覆蓋ToString()方法,並且返回完全限定名的類不會覆蓋它,而只需調用base的(ObjectToString()方法? Object.ToString()實現是否僅返回該類的完全限定名稱?.ToString()方法是如何工作的?

+6

是的,你是對的。 – MarcinJuraszek 2012-04-09 15:44:30

+0

這是什麼問題?這是「我的理解是否正確?」? – 2012-04-09 15:44:58

回答

17

有時候,當我打電話的ToString方法返回運行時類型接收呼叫的對象的全名。

正確。

但是對於某些類型,如System.Int32,ToString則返回接收器轉換爲字符串的值。

正確。

System.Int32結構覆蓋ToString方法嗎?

是的。

做其他類型的,其ToString方法返回完全限定的類型名稱覆蓋ToString

可能是這樣的,是的。當然,他們可以重寫該方法,並且重寫方法與基類方法完全相同,但是這樣做有點沒有意義。

在這些情況下

因此,呼籲ToString只是調用System.Object實施ToString,它返回完全合格的名字嗎?

正確。

您似乎對這是如何工作有一個牢固的把握。我唯一的修正是注意System.Int32結構,而不是

+0

我現在編輯感謝 – deen 2012-04-09 15:57:59

+5

@Ala:你問我爲什麼有人低估你的問題嗎?可能是因爲它在ToString方法**的文檔頁面上回答了**。如果您對方法有疑問,請嘗試閱讀該方法的文檔;如果它不回答你的問題,然後嘗試搜索網站或本網站的答案。與其讓人們忙於忙碌的一天來回答你的問題,不如先做一個基本的,最低水平的研究。 – 2012-04-09 16:01:45

+0

我沒有得到你。你回答每一行都對嗎?這是我期望的answar – deen 2012-04-09 16:03:00

8

你甚至試圖尋找你的問題的答案?

http://msdn.microsoft.com/en-us/library/system.object.tostring.aspx

的ToString是在.NET Framework的主要格式化方法。它 將對象轉換爲其字符串表示,以便它適合顯示 。 (有關在.NET框架 格式化支持的信息,請參見格式化類型。)

ToString方法的缺省的實現返回對象的類型的完全 限定名,如下面的示例 所示。

因爲對象是基類在.NET框架 所有引用類型的,這種行爲是通過引用類型的不 重寫ToString方法繼承。以下示例說明了這一點。 它定義了一個名爲Object1的類,該類接受所有Object成員的默認 實現。它的ToString方法返回對象的完全限定類型名稱 。

0

有關C#中的ToString()方法的幾點。

  1. ToString()方法在基類System.Object類中定義,因此它可用於所有要使用的類型和參數。

  2. 由system.object基類提供的ToString()的默認實現將爲您提供包括名稱空間的類型的完整名稱。

  3. 如果您不想使用默認實現,那麼您可以重寫ToString()方法。是ToString()方法是可覆蓋的。你在哪裏覆蓋它?您可以在不希望其默認實現的類中覆蓋它。