.ToString()方法如何工作?
有时当我调用类的.ToString()
方法时,它返回类的完全限定名。 但对于某些类的/ struct(如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中的主要格式化方法。 它将对象转换为其字符串表示forms,以便适合显示。 (有关.NET Framework中格式化支持的信息,请参阅格式化类型。)
ToString方法的默认实现返回Object类型的完全限定名称,如以下示例所示。
因为Object是.NET Framework中所有引用类型的基类,所以此行为由不覆盖ToString方法的引用类型inheritance。 以下示例说明了这一点。 它定义了一个名为Object1的类,它接受所有Object成员的默认实现。 它的ToString方法返回对象的完全限定类型名称。
关于C#中ToString()方法的几点。
-
ToString()方法在基本System.Object类中定义,因此可用于所有类型和参数。
-
system.object基类提供的ToString()的默认实现将为您提供包括命名空间的类型的完整名称。
-
如果您不想使用默认实现,则可以覆盖ToString()方法。 是ToString()方法是可覆盖的。 你在哪里覆盖它? 您可以在不希望其默认实现的类中覆盖它。