如何.ToString() 方法工作
本文关键字:方法 工作 ToString 如何 | 更新日期: 2023-09-27 18:30:35
有时当我调用类的.ToString()
方法时,它会返回该类的完全限定名。但是对于某些类/结构(如Int32
),它返回一个与对象(整数的值)相对应的字符串。这是否意味着 Int32
类重写 ToString()
方法,并且返回完全限定名的类不会重写它,而只是调用 base 的 (Object
的) ToString()
方法?Object.ToString()
实现是否只返回类的完全限定名?
有时,当我调用
ToString
方法时,它会返回接收调用的对象的运行时类型的完全限定名。
正确。
但对于某些类型,例如
System.Int32
,ToString
返回转换为字符串的接收器的值。
正确。
System.Int32
结构是否覆盖ToString
方法?
是的。
其
ToString
方法返回完全限定类型名称的其他类型是否不会覆盖ToString
?
可能是这样,是的。当然,他们可以重写该方法,并让重写方法执行与基类方法完全相同的操作,但这有点毫无意义。
所以在这些情况下,调用
ToString
只是调用ToString
的System.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() 方法的几点。
-
ToString() 方法在基本 System.Object 类中定义,因此可用于所有要使用的类型和参数。
-
由 system.object 基类提供的 ToString() 的默认实现将为您提供类型的完整名称,包括命名空间。
-
如果你不想要默认实现,那么你可以重写 ToString() 方法。是的,ToString() 方法是可重写的。你在哪里覆盖它?您可以在不需要其默认实现的类中重写它。
除了所有其他答案之外,重要的是要了解隐式使用 System.String.Format()
的 .NET API 部分,例如在 TextWriter
、Console
、StringBuilder.Append()
和 StringBuilder.AppendLine()
等中找到的 Write()
和 WriteLine()
方法,当然还有 string.Format()
实现本身,在没有指定显式格式时,将使用 ToString()
方法来格式化对象。
这意味着适用于上述ToString()
的所有内容也适用于所有其他方案。