1
虽然在代码定义窗口中查看System.Type类,但似乎无法理解此类的实例如何隐式转换为字符串。例如,在以下代码中:System.Type;隐式强制转换为字符串
int foo = 0;
Console.WriteLine("Hi! I'm a type of type {0}", foo.GetType());
GetType()产生的System.Type如何隐式转换为字符串?
虽然在代码定义窗口中查看System.Type类,但似乎无法理解此类的实例如何隐式转换为字符串。例如,在以下代码中:System.Type;隐式强制转换为字符串
int foo = 0;
Console.WriteLine("Hi! I'm a type of type {0}", foo.GetType());
GetType()产生的System.Type如何隐式转换为字符串?
它没有隐式转换为字符串。它被转换为Object
(使用标准的隐式参考转换),并且String.Format
正在格式化它 - 在这种情况下通过调用ToString
。
这不被在编译时完成。您显示的代码称为Console.WriteLine(string, object)
过载。
爱Tony的参考 – johnc 2009-11-08 22:52:09
@lagerdalek:我想我会在本周的某段时间内退休,然后回到我身边。 – 2009-11-08 22:53:42
Duh,是的,它调用了一个重载的WriteLine()方法。感谢您指出了这一点。错过了,我读它为Console.WriteLine(“blablah”+ foo.GetType());现在,我们会勉强在那里得到一个编译错误......嗯。 – 2009-11-08 22:56:22