Object 类的方法如何ToString
能够发现对象的类型?
问问题
277 次
4 回答
4
默认实现Object.ToString
是使用Object.GetType方法,其实现依赖于 CLR。
于 2012-09-18T06:18:33.127 回答
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()
基本上返回类型的'Name',也就是“全名”或者完全限定名,比如System.Object
. 请注意,名称包括命名空间。
于 2012-09-18T06:22:23.897 回答
1
对象的ToString()
方法实际上是设置对象如何被表示为字符串,因此如果它在任何类中实现,则该类的实例将显示为其在该方法中的集合。
看看文档中的这个例子:
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() 的类特定实现,确定可以在其中调用它的类类型,例如通过GetType或typeof
于 2012-09-18T06:27:20.913 回答
0
ToString()
类通过覆盖基类方法提供自己的实现。这就是您如何看待该方法的特定实现。
您可能会看到:如何:重写 ToString 方法(C# 编程指南)
来自上述链接的示例:
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
方法object
。现在,当您调用person.ToString()
它时,它会调用您的ToString
方法的实现,因为您已经覆盖了现有的实现。
于 2012-09-18T06:15:28.607 回答