一言で言えばC#5.0から: 22ページの決定的なリファレンス。
参照型では、参照とオブジェクトに別々のメモリを割り当てる必要があります。オブジェクトは、そのフィールドと同じバイト数を消費し、追加の管理オーバーヘッドを加えます。正確なオーバーヘッドは本質的に .NET ランタイムの実装に限定されますが、少なくともオーバーヘッドは 8 バイトであり、オブジェクトの型のキーと、マルチスレッドのロック状態やフラグなどの一時的な情報を格納するために使用されます。ガベージ コレクタによる移動から修正されたかどうかを示します。オブジェクトへの各参照には、.NET ランタイムが 32 ビットまたは 64 ビットのどちらのプラットフォームで実行されているかに応じて、追加の 4 または 8 バイトが必要です。
この大胆な部分を完全に理解しているかどうかはよくわかりません。32 ビット プラットフォームでは参照に 4 バイトが必要であり、64 ビット プラットフォームでは 8 バイトが必要です。
だから、私たちが持っているとしましょう
string s = "Soner";
s
この参照に必要なバイト数を確認するにはどうすればよいですか?