問題:
決定任意物件實例的大小(包括集合、組合和單一物件)是管理物件大小時的常見任務。
解:
雖然沒有官方方法,但您可以利用反射和未公開的 .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中文網其他相關文章!