匯出 (0) 列印
全部展開
本文章是由機器翻譯。 將指標移到文章內的文字上方即可查看原文。 其他資訊。
譯文
原文

Object.ToString 方法

傳回表示目前物件的字串。

命名空間:  System
組件:  mscorlib (在 mscorlib.dll 中)

public virtual string ToString()

傳回值

類型:System.String
表示目前物件的字串。

ToString 是 .NET Framework 中主要的格式化方法。 它會將物件轉換為其字串表示形式,使它適合於顯示。(如需 .NET Framework 中格式化支援的詳細資訊,請參閱格式化類型)。

ToString 方法的預設實作傳回 Object 型別的完整限定名稱,如下列範例所示。


using System;

public class Example
{
   public static void Main()
   {
      Object obj = new Object();
      Console.WriteLine(obj.ToString());
   }
}
// The example displays the following output:
//      System.Object


因為 Object 是 .NET Framework 中所有參考型別的基底類別,未覆寫 ToString 方法的參考型別都會繼承這個行為。 如以下範例所示。 它會定義名為 Object1 的類別,此類別接受所有 Object 成員的預設實作。 ToString 方法會傳回物件的完整名稱。


using System;
using Examples;

namespace Examples
{
   public class Object1
   {
   }
}

public class Example
{
   public static void Main()
   {
      object obj1 = new Object1();
      Console.WriteLine(obj1.ToString());
   }
}
// The example displays the following output:
//   Examples.Object1


型別通常會覆寫 ToString 方法,以傳回表示物件執行個體的字串。 例如,基底型別 (例如,CharInt32String) 會提供 ToString 實作,傳回物件表示之值的字串格式。 下列範例會定義 Object2 類別,這個類別覆寫 ToString 方法以傳回型別名稱與其值。


using System;

public class Object2
{
   private object value;

   public Object2(object value)
   {
      this.value = value;
   }

   public override string ToString()
   {
      return base.ToString() + ": " + value.ToString();
   }
}

public class Example
{
   public static void Main()
   {
      Object2 obj2 = new Object2('a');
      Console.WriteLine(obj2.ToString());
   }
}
// The example displays the following output:
//       Object2: a


Windows 執行階段的注意事項

當您呼叫 Windows 執行階段 中某個類別的 ToString 方法時,其預設的類別行為不會覆寫 ToString 這是 .NET Framework 針對 Windows 執行階段 提供的部分支援 (參閱 適用於 Windows 市集應用程式和 Windows 執行階段的 .NET Framework 支援)。 Windows 執行階段 中的類別不繼承 Object,並且不一定實作 ToString 不過,當您在 C# 程式碼或 Visual Basic 程式碼中使用它們,以及 .NET Framework 會提供這些方法的預設行為時,它們永遠都會有 ToStringEquals(Object)GetHashCode 方法。

從 .NET Framework 4.5.1 開始, Common Language Runtime 在回到 Object.ToString 的預設實作之前,會在 Windows 執行階段 物件上使用IStringable.ToString

注意事項注意事項

在 C# 或 Visual Basic 撰寫的 Windows 執行階段 類別可以覆寫 ToString 方法。

7bxwbwt2.collapse_all(zh-tw,VS.110).gifWindows 執行階段 和 IStringable 介面

從 Windows 8.1 開始,Windows 執行階段 包含一個 IStringable 介面,其擁有單一方法 IStringable.ToString,此方法提供相當於 Object.ToString 所提供的基本的格式化支援。 若要避免模稜兩可,您不應該在 Managed 型別上實作 IStringable

當 Managed 物件被機器碼或其他語言撰寫的程式碼 (例如 JavaScript 或 C++/CX) 呼叫時,它們會實作 IStringable 當事件 IStringable 未實作在 Managed 物件上時,Common Language Runtime 會自動呼叫從 IStringable.ToStringObject.ToString

注意事項警告

由於 Common Language Runtime 會在 Windows 市集 應用程式上為所有 Managed 型別實作 IStringable,我們建議您不要提供您自己的 IStringable 實作。 實作 IStringable,可能會導致從 Windows 執行階段 呼叫 ToString時 (在 C++/CX 或 JavaScript 中),發生非預期的行為。

如果您選擇在 Windows 執行階段 元件匯出的公用 Managed 型別上實作 IStringable,會套用下列限制:

  • 您只能在「類別實作」關聯性中定義 IStringable ,例如

    public class NewClass : IStringable
    

    在 C# 中,或

    Public Class NewClass : Implements IStringable
    

    在 Visual Basic 中。

  • 您不能在介面上實作 IStringable

  • 您不能宣告參數為型別 IStringable

  • IStringable 不能是方法、屬性或欄位的傳回型別。

  • 您不能使用如下的方法定義,從基底類別隱藏您的 IStringable 實作:

    
    public class NewClass : IStringable
    {
       public new string ToString()
       {
          return "New ToString in NewClass";
       }
    }
    
    

    相反地, IStringable.ToString 實作必須永遠覆寫基底類別實作。 您只能以在強型別類別執行個體上叫用它來隱藏 ToString 實作。

請注意,在各種情況下,從機器碼呼叫到實作 IStringable 或隱藏它的 ToString 實作之 Managed 型別可能會產生未預期的行為。

繼承者注意事項

當您實作自己的型別時,應覆寫 ToString 方法,傳回對那些型別有意義的值。 如果衍生類別控制格式的需求高於 ToString 所提供的控制功能,則可以實作 IFormattable 介面。 IFormattable.ToString(String, IFormatProvider)方法使您能夠定義控制格式化的格式字串,以及使用能提供特定文化特性格式化的IFormatProvider物件。

ToString 方法的覆寫應該遵循以下方針:

  • 傳回的字串應為人類可讀的形式。

  • 傳回的字串應可唯一識別物件執行個體的值。

  • 傳回的字串應該盡可能簡短,以便由偵錯工具顯示。

  • 您的 ToString 覆寫不應傳回 String.Empty 或空字串。

  • 您的 ToString 覆寫不應該擲回例外狀況。

  • 如果執行個體的字串表示會因文化特性而異或是有多種的格式化方式,請實作 IFormattable 介面。

  • 如果傳回的字串包含敏感資料,您應該先要求適當的使用權限。 如果要求成功,您可以傳回敏感資訊;否則,您應該傳回排除敏感資訊的字串。

  • 您的 ToString 覆寫不應該有明顯的副作用,以避免偵錯的複雜性。 例如,呼叫 ToString 方法不應該變更執行個體欄位的值。

  • 如果您的型別實作一個剖析方法 ( ParseTryParse 方法、建構函式,或將字串具現化為型別的執行個體之其他靜態方法),您應該確定 ToString 方法傳回的字串可以轉換為物件的執行個體。

.NET Framework

支援版本:4.5.2、4.5.1、4.5、4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

支援版本:4、3.5 SP1

可攜式類別庫

支援版本:可攜式類別庫

適用於 Windows 市集應用程式的 .NET

支援版本:Windows 8

適用於 Windows Phone 應用程式的 .NET

支援版本:Windows Phone 8、Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (不支援伺服器核心角色), Windows Server 2008 R2 (SP1 (含) 以後版本支援伺服器核心角色,不支援 Itanium)

.NET Framework 並不支援各種平台的所有版本。如需支援版本的清單,請參閱.NET Framework 系統需求

社群新增項目

新增
顯示:
© 2015 Microsoft