値型と参照型の間の暗黙的な型変換(ボックス化、ボックス化解除)にはパフォーマンス上の影響がある。
ボックス化とボックス化解除はできるだけ避けるべき。
たとえば、以下のコードではボックス化が発生する。
int first = 1;
int second = 2;
Console.WriteLine($"A few numbers: {first}, {second}");
文字列を組み立てる段階で、int
に対してToString()
を実行するために、コンパイラがボックス化のための命令を生成する。
ボックス化を避けるには、以下のように明示的なメソッド呼び出しを行う。
Console.WriteLine($"A few numbers:{first.ToString()}, {second.ToString()}");
このように、System.Object
への暗黙的な型変換に注意することで、ボックス化を最小限にすることができる。