Object类的ToString方法如何能够发现对象的类型?

时间:2012-09-18 06:13:03

标签: c# .net

Object类的ToString方法如何能够发现对象的类型?

4 个答案:

答案 0 :(得分:4)

Object.ToString的默认实现是使用Object.GetType方法,其实现依赖于CLR。

答案 1 :(得分:2)

Debug.WriteLine(this.GetType().FullName);

来自微软的源代码:

// Returns a String which represents the object instance.  The default 
// for an object is to return the fully qualified name of the class. 
//
public virtual String ToString() 
{
    return GetType().ToString();
}

GetType().ToString()基本上返回类型的“名称”,即“全名”或完全限定名称,例如System.Object。请注意,该名称包含名称空间。

答案 2 :(得分:1)

对象的ToString() Methode实际上是设置对象如何表示为字符串,因此如果它在任何类中实现,则此类的实例将在此方法中显示为其集合。 / p>

documentation

中查看此示例
using System;

public class Object2
{
   private object value;

   public Object2(object value)
   {
      this.value = value;
   }

   public override string ToString()
   {
      return base.ToString() + ": " + value.ToString();
   }
}

public class Example
{
   public static void Main()
   {
      Object2 obj2 = new Object2('a');
      Console.WriteLine(obj2.ToString());
   }
}
// The example displays the following output: 
//       Object2: a

如果Methode在子类中实现,它将在此类中调用并运行ToString()的类特定实现,确定可以在其中调用的classtype,例如GetType或{ {3}}

答案 3 :(得分:0)

类通过覆盖基类方法提供自己的ToString()实现。这就是你如何看待该方法的特定实现。

您可能会看到:How to: Override the ToString Method (C# Programming Guide)

以上链接中的示例:

class Person
    {
        public string Name { get; set; }
        public int Age { get; set; }

        public override string ToString()
        {
            return "Person: " + Name + " " + Age;
        }
    }

使用它:

Person person = new Person { Name = "John", Age = 12 };
Console.WriteLine(person);
// Output:
// Person: John 12

在上面的示例中,您有一个类Person,它覆盖了基类ToString的{​​{1}}方法。现在,当您调用object时,它会调用person.ToString()方法的实现,因为您已覆盖现有实现。