探究 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 更新中可能會被棄用。
需要考慮的因素
此方法適用於具有相同、明確定義類型的實例的「普通」物件。但是,它無法準確測量數組、字串和 StringBuilder 等物件的大小,因為它們的大小取決於它們包含的元素數量。對於這些對象,必須將其包含元素的大小添加到其基本實例大小中。
以上是如何確定 C# 物件的位元組大小?的詳細內容。更多資訊請關注PHP中文網其他相關文章!