질문:
객체 인스턴스(컬렉션, 조합 및 개별 객체 포함)의 크기를 결정하는 것은 객체 크기를 관리할 때 일반적인 작업입니다.
해결책:
공식적인 방법은 없지만 리플렉션과 문서화되지 않은 .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 중국어 웹사이트의 기타 관련 기사를 참조하세요!