ホームページ >バックエンド開発 >C++ >C# でオブジェクト インスタンスのサイズをバイト単位で確認するにはどうすればよいですか?

C# でオブジェクト インスタンスのサイズをバイト単位で確認するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-10 16:11:42802ブラウズ

How Can I Determine the Size of an Object Instance in Bytes in C#?

C# でオブジェクト サイズ (バイト単位) を取得します

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。