C# オブジェクトのバイト サイズを調べる
C# では、オブジェクト インスタンスのバイト サイズを正確に判断するのは簡単ではありません。オブジェクトにはさまざまなコレクション、組み合わせ、個々のエンティティが含まれる場合があるため、そのサイズを正確に測定することが困難になります。
オブジェクトのサイズを決定する
パブリック API はありませんが、オブジェクトのバイト サイズを決定する効率的な方法があります。
<code class="language-csharp">object obj = new List<int>(); RuntimeTypeHandle th = obj.GetType().TypeHandle; int size = *(*(int**)&th + 1); Console.WriteLine(size);</code>
このコードは、オブジェクトのタイプ TypeHandle
を使用して、内部の「ベース インスタンス サイズ」フィールドを取得します。このメソッドは文書化されていないため、将来の .NET 更新で非推奨になる可能性があることに注意してください。
考慮すべき要素
このメソッドは、同じ明確に定義された型のインスタンスを持つ「通常の」オブジェクトに対して機能します。ただし、配列、文字列、StringBuilders などのオブジェクトのサイズは、オブジェクトに含まれる要素の数に依存するため、正確に測定することはできません。これらのオブジェクトの場合、そのオブジェクトを含む要素のサイズをその基本インスタンスのサイズに追加する必要があります。
以上がC# オブジェクトのバイト サイズを確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。