问题:
确定任意对象实例的大小(包括集合、组合和单个对象)是管理对象大小时的常见任务。
解决方案:
虽然没有官方方法,但您可以利用反射和未公开的 .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中文网其他相关文章!