为什么要在 .NET 中的对象上定义 ToString()?
Why is ToString() defined on Object in .NET?
我一直想知道导致在 .NET 中创建对象上的 ToString 的设计选择。
documentation 给出了一个非常明确的目的:
Object.ToString is the major formatting method in the .NET Framework. It converts an object to its string representation so that it is suitable for display.
它是在 Object
上定义的,所以 所有 类型至少有一个默认实现。它是 virtual
所以类型可以提供自己的实现,如果他们想显示 class 名称以外的东西(不需要知道实际类型)。数值类型会覆盖它,因此它们的 value 可以默认显示。
至少需要某种方式来直观地表示 class 实例,即使它只显示 class 名称。一方面,它可以检查变量的值。如果我们在直接 window 中键入 ?x
,如果 x
显示值的唯一方法是将其呈现为字符串。
根据我的版本 "Framework Design Guidelines" .ToString 的存在是为了方便调试。在第 272 页上讨论了此方法的最佳用途并指出“...调试器将其用作显示对象的默认方式。”
我一直想知道导致在 .NET 中创建对象上的 ToString 的设计选择。
documentation 给出了一个非常明确的目的:
Object.ToString is the major formatting method in the .NET Framework. It converts an object to its string representation so that it is suitable for display.
它是在 Object
上定义的,所以 所有 类型至少有一个默认实现。它是 virtual
所以类型可以提供自己的实现,如果他们想显示 class 名称以外的东西(不需要知道实际类型)。数值类型会覆盖它,因此它们的 value 可以默认显示。
至少需要某种方式来直观地表示 class 实例,即使它只显示 class 名称。一方面,它可以检查变量的值。如果我们在直接 window 中键入 ?x
,如果 x
显示值的唯一方法是将其呈现为字符串。
根据我的版本 "Framework Design Guidelines" .ToString 的存在是为了方便调试。在第 272 页上讨论了此方法的最佳用途并指出“...调试器将其用作显示对象的默认方式。”