質問:
オブジェクト インスタンス (コレクション、組み合わせ、個々のオブジェクトを含む) のサイズを決定することは、オブジェクト サイズを管理する際の一般的なタスクです。
解決策:
正式な方法はありませんが、リフレクションと文書化されていない .NET 内部を利用してオブジェクト サイズを推定できます。
<code class="language-csharp">object obj = new List<int>(); RuntimeTypeHandle th = obj.GetType().TypeHandle; int size = *(*(int**) &th + 1); Console.WriteLine(size);</code>
説明:
RuntimeTypeHandle
型の内部表現へのアクセスを提供します。 制限事項:
StringBuilder
など) のオブジェクト サイズが正確に反映されていない可能性があります。 拡張メソッド:
便宜上、サイズの取得を簡素化するために Object
クラスに拡張メソッドを実装することを検討できます。
<code class="language-csharp">public static int GetEstimatedByteSize(this object obj) { RuntimeTypeHandle th = obj.GetType().TypeHandle; return *(*(int**) &th + 1); }</code>
この拡張メソッドは注意して使用する必要があり、すべてのタイプとシナリオで正確であることが保証されていないことに注意してください。
以上がC# オブジェクトのバイト サイズを推定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。