2009-11-08 63 views
1

虽然在代码定义窗口中查看System.Type类,但似乎无法理解此类的实例如何隐式转换为字符串。例如,在以下代码中:System.Type;隐式强制转换为字符串

int foo = 0; 
Console.WriteLine("Hi! I'm a type of type {0}", foo.GetType()); 

GetType()产生的System.Type如何隐式转换为字符串?

回答

4

它没有隐式转换为字符串。它被转换为Object(使用标准的隐式参考转换),并且String.Format正在格式化它 - 在这种情况下通过调用ToString

被在编译时完成。您显示的代码称为Console.WriteLine(string, object)过载。

+0

爱Tony的参考 – johnc 2009-11-08 22:52:09

+0

@lagerdalek:我想我会在本周的某段时间内退休,然后回到我身边。 – 2009-11-08 22:53:42

+0

Duh,是的,它调用了一个重载的WriteLine()方法。感谢您指出了这一点。错过了,我读它为Console.WriteLine(“blablah”+ foo.GetType());现在,我们会勉强在那里得到一个编译错误......嗯。 – 2009-11-08 22:56:22

相关问题