While looking at the System.Type class under the Code Definition Window, I cannot seem to understand how an instance of this class is implicitly cast to string. For example, on the following code:
int foo = 0;
Console.WriteLine("Hi! I'm a type of type {0}", foo.GetType());
How was the System.Type resulting from GetType() implicitly cast to string?
It's not being implicitly cast to string. It's being converted to
Object
(with the standard implicit reference conversion), andString.Format
is formatting it appropriately - by callingToString
in this case.This is not being done at compile-time. The code you've shown calls the
Console.WriteLine(string, object)
overload.