Object类的ToString
方法如何能够发现对象的类型?
答案 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>
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()
方法的实现,因为您已覆盖现有实现。