导出 (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 方法以返回表示对象实例的字符串。 例如,基础数据类型(如 Char, Int32String)提供 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 运行时 提供的支持的一部分 (请参见.NET Framework 对 Windows 应用商店应用程序和 Windows 运行时的支持情况)。 在 Windows 运行时 的类不继承 Object,并不总是实现 ToString 但是,它们总显示具有 ToStringEquals(Object)GetHashCode 方法,当您在 C# 或 Visual Basic 代码时,.NET Framework,并为这些方法提供默认值行为。

从 .NET Framework 4.5.1开始,在返回 Object.ToString的默认值实现之前,公共语言运行时将在 Windows 运行时 对象使用IStringable.ToString

说明说明

在 C# 或 Visual Basic 编写的Windows 运行时 类可以重写方法 ToString

7bxwbwt2.collapse_all(zh-cn,VS.110).gifWindows 运行时 和 IStringable 接口

从 Windows 8.1 开始,Windows 运行时 包含IStringable方法,IStringable.ToString,提供支持可比较的由 Object.ToString提供的基本格式设置。 若要避免多义性,则在托管类型不应实现 IStringable

当托管对象调用本机代码或由语言编写的代码 (如 JavaScript 或 C++/CX 时,控件显示实现 IStringable 公共语言运行时在托管对象将自动从 IStringable.ToString 路由到该事件的 IStringableObject.ToString 调用尚未实现。

警告说明警告

由于托管所有的公共语言 IStringable 运行时自动实现输入 Windows 应用商店 apps,建议您不要提供自己的 IStringable 实现。 在调用 ToString Windows 运行时、C++/CX 或 JavaScript 时,实现 IStringable 会产生意外的行为。

如果您在 Windows 运行时 元素导出的公共托管类型选择实现 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 实现可能导致意外行为。

对继承者的说明

当实现您自己的类型时,应重写 ToString 方法,以返回对这些类型有意义的值。 需要比 ToString 提供的对格式设置的控制更多控制的派生类应实现 IFormattable 接口。 IFormattable.ToString(String, IFormatProvider) 方法使您能够定义控制格式设置的格式字符串,并使用可以为区域性特定的格式设置提供的 IFormatProvider 对象。

重写 ToString 方法应当遵循以下准则:

  • 该返回的字符串应为对人友好且可读。

  • 该返回的字符串应唯一定义对象实例的值。

  • 该返回的字符串应尽可能短,以便适用于调试器显示。

  • 您的 ToString 重写不应返回 String.Empty 或空字符串。

  • 您的 ToString 重写不应引发异常。

  • 如果,实例的字符串表示是culture-sensitive的或可以通过多种方式格式化的,请实现 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 系统要求

社区附加资源

添加
显示:
© 2014 Microsoft