如何.ToString() 方法工作

本文关键字:方法 工作 ToString 如何 | 更新日期: 2023-09-27 18:30:35

有时当我调用类的.ToString()方法时,它会返回该类的完全限定名。但是对于某些类/结构(如Int32),它返回一个与对象(整数的值)相对应的字符串。这是否意味着 Int32 类重写 ToString() 方法,并且返回完全限定名的类不会重写它,而只是调用 base 的 (Object的) ToString()方法?Object.ToString()实现是否只返回类的完全限定名?

如何.ToString() 方法工作

有时,当我调用 ToString 方法时,它会返回接收调用的对象的运行时类型的完全限定名。

正确。

但对于某些类型,例如 System.Int32ToString返回转换为字符串的接收器的值。

正确。

System.Int32结构是否覆盖ToString方法?

是的。

ToString方法返回完全限定类型名称的其他类型是否不会覆盖ToString

可能是这样,是的。当然,他们可以重写该方法,并让重写方法执行与基类方法完全相同的操作,但这有点毫无意义。

所以在这些情况下,调用ToString只是调用 ToStringSystem.Object实现,它返回完全限定名?

正确。

您似乎已经牢牢掌握了它的工作原理。我唯一的更正是注意System.Int32是一个结构,而不是一个类

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

ToString 是 .NET Framework 中的主要格式化方法。它将对象转换为其字符串表示形式,使其适合用于显示。(有关 .NET 中的格式设置支持的信息框架,请参阅格式设置类型。

ToString 方法的默认实现返回完全对象类型的限定名,如以下示例所示显示。

因为对象是 .NET 中所有引用类型的基类框架,此行为由不重写 ToString 方法。以下示例对此进行了说明。它定义了一个名为 Object1 的类,该类接受默认值所有对象成员的实现。其 ToString 方法返回对象的完全限定类型名称。

关于 C# 中 ToString() 方法的几点。

  1. ToString() 方法在基本 System.Object 类中定义,因此可用于所有要使用的类型和参数。

  2. 由 system.object 基类提供的 ToString() 的默认实现将为您提供类型的完整名称,包括命名空间。

  3. 如果你不想要默认实现,那么你可以重写 ToString() 方法。是的,ToString() 方法是可重写的。你在哪里覆盖它?您可以在不需要其默认实现的类中重写它。

除了所有其他答案之外,重要的是要了解隐式使用 System.String.Format() 的 .NET API 部分,例如在 TextWriterConsoleStringBuilder.Append()StringBuilder.AppendLine() 等中找到的 Write()WriteLine() 方法,当然还有 string.Format() 实现本身,在没有指定显式格式时,将使用 ToString() 方法来格式化对象。

这意味着适用于上述ToString()的所有内容也适用于所有其他方案。