C# でオブジェクト インスタンスのサイズ (バイト単位) を確認するにはどうすればよいですか?これは、オブジェクトのさまざまなコレクションの合計サイズを決定する必要がある場合に特に便利です。
オブジェクトのサイズを取得する
インスタンスのサイズを取得するには、文書化されていない一連のトリックを使用できます。これらのメソッドは常に動作することが保証されているわけではなく、将来の .NET 更新で変更される可能性があることに注意してください。
TypeHandle を使用する
TypeHandle 内部構造を使用して、型の「ベース インスタンス サイズ」フィールドにアクセスできます。その方法は次のとおりです:
<code class="language-csharp">object obj = new List<int>(); // 使用您需要的对象替换 RuntimeTypeHandle th = obj.GetType().TypeHandle; int size = *(*(int**)&th + 1); Console.WriteLine(size);</code>
このメソッドは、最も一般的なタイプの基本インスタンス サイズを提供します。ただし、配列、文字列、StringBuilder には、含まれる要素を考慮するために追加の計算が必要です。
拡張メソッドの考慮事項
オブジェクト サイズをバイト単位で決定するための既知の拡張メソッドはありませんが、必要に応じて自分で開発できます。
以上がC# でオブジェクト インスタンスのサイズをバイト単位で確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。