有时当我调用类的.ToString()
方法时,它会返回类的完全限定名。但对于某些类的/ struct(如Int32
),它返回一个字符串对应的对象(整数的值)。这是否意味着Int32
类会覆盖ToString()
方法,而返回完全限定名称的类不会覆盖它,而只是调用base(Object
){{1} } 方法? ToString()
实现是否只返回类的完全限定名称?
答案 0 :(得分:17)
有时当我调用
ToString
方法时,它会返回接收调用的对象的运行时类型的完全限定名称。
正确。
但是对于某些类型,例如
System.Int32
,ToString
会返回转换为字符串的接收器的值。
正确。
System.Int32
结构是否会覆盖ToString
方法?
是
其他
ToString
方法返回完全限定类型名称而非覆盖ToString
的其他类型?
情况可能就是这样,是的。当然,他们可以覆盖该方法并使覆盖方法与基类方法完全相同,但这有点无意义。
因此,在这些情况下,调用
ToString
只调用System.Object
的{{1}}实现,它会返回完全限定的名称?
正确。
您似乎已经牢牢掌握了它的工作原理。我唯一的更正是要注意ToString
是结构,而不是类。
答案 1 :(得分:8)
您是否尝试过搜索问题的答案?
http://msdn.microsoft.com/en-us/library/system.object.tostring.aspx
ToString是.NET Framework中的主要格式化方法。它 将对象转换为其字符串表示形式,以使其适合 用于显示。 (有关.NET中格式化支持的信息 框架,请参阅格式化类型。)
ToString方法的默认实现返回完全 Object类型的限定名称,如下例所示 所示。强>
因为Object是.NET中所有引用类型的基类 在Framework中,此行为由不具有的引用类型继承 覆盖ToString方法。以下示例说明了这一点。 它定义了一个名为Object1的类,它接受默认值 所有Object成员的实现。它的ToString方法返回 对象的完全限定类型名称。
答案 2 :(得分:1)
除了所有其他答案之外,重要的是要了解 .NET API 中隐式使用 System.String.Format()
的部分,例如在中找到的 Write()
和 WriteLine()
方法TextWriter
、Console
、StringBuilder.Append()
和 StringBuilder.AppendLine()
等,当然还有 string.Format()
实现本身,将使用 ToString()
方法来格式化未指定显式格式时的对象。
这意味着适用于上述 ToString()
的所有内容也适用于所有其他场景。
答案 3 :(得分:0)
关于C#中ToString()方法的几点。
ToString()方法在基本System.Object类中定义,因此可用于所有类型和参数。
system.object基类提供的ToString()的默认实现将为您提供包含命名空间的类型的完整名称。
如果您不想要默认实现,则可以覆盖ToString()方法。是ToString()方法是可覆盖的。你在哪里覆盖它?您可以在不希望其默认实现的类中覆盖它。