【问题标题】:How does the .ToString() method work?.ToString() 方法是如何工作的?
【发布时间】:2012-04-21 23:25:38
【问题描述】:

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

【问题讨论】:

    标签: c# tostring object-to-string


    【解决方案1】:

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

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

    ToString 方法的默认实现返回完整的 Object 类型的限定名称,如下例所示 节目。

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

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

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

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

        【讨论】:

          【解决方案4】:

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

          正确。

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

          正确。

          System.Int32 结构会覆盖ToString 方法吗?

          是的。

          ToString 方法返回完全限定类型名称的其他类型会覆盖ToString吗?

          可能是这样,是的。当然,他们可以覆盖该方法,并让覆盖的方法做与基类方法完全相同的事情,但这有点没有意义。

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

          正确。

          您似乎对它的工作原理有充分的了解。我唯一的更正是注意System.Int32 是一个struct,而不是一个class

          【讨论】:

          • @Ala:你是在问我为什么有人反对你的问题吗?可能是因为 在 ToString 方法的文档页面上回答了它。如果您对某个方法有疑问,请尝试阅读该方法的文档;如果它没有回答您的问题,请尝试在网络或本网站上搜索答案。与其要求人们在忙碌的一天中抽出时间来回答你的问题,不如先自己做一个基本的、最低限度的研究。
          • 我没找到你。你每一行都答对了吗?这是我所期望的答案
          • @Eric,我想问你一个私人问题?为了在我的项目中高水平地使用设计模式和敏捷方法,您会建议我拥有哪些书籍/材料?谢谢
          • @Ala:我不知道;我不使用“敏捷方法”。我喜欢 Judith Bishop 关于设计模式的书,但我不知道它是否满足您的需求。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-03-11
          • 2019-05-20
          • 2016-07-26
          • 2018-06-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多