私はスタック オーバーフローの質問に参加していました。Is everything in .NET an object? .
そして、1人のポスター(受け入れられた回答のコメント)は、値の型でメソッド呼び出しを実行するとボクシングが発生すると考えているようです。彼はBoxing and Unboxing (C# Programming Guide)を教えてくれましたが、これは私たちが説明しているユース ケースを正確に指定していません。
私は単一の情報源を信頼する人ではないので、質問についてさらにフィードバックを得たかっただけです. 私の直感では、ボクシングはありませんが、私の直感は最悪です。:D
さらに詳しく説明するには:
私が使用した例は次のとおりです。
int x = 5;
string s = x.ToString(); // Boxing??
ここで受け入れられた回答が示すように、問題の構造体がオブジェクトから継承されたメソッドをオーバーライドする場合、ボクシングは発生しません。
ただし、構造体がメソッドをオーバーライドしない場合は、callvirt の前に「constrain」 CILコマンドが実行されます。ドキュメントOpCodes.Constrained Fieldによると、これによりボクシングが発生します。
thisType が値型であり、thisType がメソッドを実装していない場合、ptr は逆参照され、ボックス化され、'this' ポインターとして callvirt メソッド命令に渡されます。