コード定義ウィンドウでSystem.Typeクラスを見ていると、このクラスのインスタンスが暗黙的に文字列にキャストされる方法を理解できないようです。たとえば、次のコードでは次のようになります。
int foo = 0;
Console.WriteLine("Hi! I'm a type of type {0}", foo.GetType());
GetType()の結果である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)
オーバーロードを呼び出します。