2012-04-09 71 views
6

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

+6

是的,你是对的。 – MarcinJuraszek 2012-04-09 15:44:30

+0

这是什么问题?这是“我的理解是否正确?”? – 2012-04-09 15:44:58

回答

17

有时候,当我打电话的ToString方法返回运行时类型接收呼叫的对象的全名。

正确。

但是对于某些类型,如System.Int32,ToString则返回接收器转换为字符串的值。

正确。

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

是的。

做其他类型的,其ToString方法返回完全限定的类型名称覆盖ToString

可能是这样的,是的。当然,他们可以重写该方法,并且重写方法与基类方法完全相同,但是这样做有点没有意义。

在这些情况下

因此,呼吁ToString只是调用System.Object实施ToString,它返回完全合格的名字吗?

正确。

您似乎对这是如何工作有一个牢固的把握。我唯一的修正是注意System.Int32结构,而不是

+0

我现在编辑感谢 – deen 2012-04-09 15:57:59

+5

@Ala:你问我为什么有人低估你的问题吗?可能是因为它在ToString方法**的文档页面上回答了**。如果您对方法有疑问,请尝试阅读该方法的文档;如果它不回答你的问题,然后尝试搜索网站或本网站的答案。与其让人们忙于忙碌的一天来回答你的问题,不如先做一个基本的,最低水平的研究。 – 2012-04-09 16:01:45

+0

我没有得到你。你回答每一行都对吗?这是我期望的answar – deen 2012-04-09 16:03:00

8

你甚至试图寻找你的问题的答案?

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

的ToString是在.NET Framework的主要格式化方法。它 将对象转换为其字符串表示,以便它适合显示 。 (有关在.NET框架 格式化支持的信息,请参见格式化类型。)

ToString方法的缺省的实现返回对象的类型的完全 限定名,如下面的示例 所示。

因为对象是基类在.NET框架 所有引用类型的,这种行为是通过引用类型的不 重写ToString方法继承。以下示例说明了这一点。 它定义了一个名为Object1的类,该类接受所有Object成员的默认 实现。它的ToString方法返回对象的完全限定类型名称 。

0

有关C#中的ToString()方法的几点。

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

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

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