Heim >Backend-Entwicklung >C++ >Wie kann ich die Bytegröße von C#-Objekten abschätzen?
Frage:
Das Bestimmen der Größe einer beliebigen Objektinstanz (einschließlich Sammlungen, Kombinationen und einzelner Objekte) ist eine häufige Aufgabe bei der Verwaltung der Objektgröße.
Lösung:
Obwohl es keine offizielle Methode gibt, können Sie Reflektion und undokumentierte .NET-Interna nutzen, um die Objektgröße abzuschätzen:
<code class="language-csharp">object obj = new List<int>(); RuntimeTypeHandle th = obj.GetType().TypeHandle; int size = *(*(int**) &th + 1); Console.WriteLine(size);</code>
Erklärung:
RuntimeTypeHandle
Bietet Zugriff auf die interne Darstellung eines Typs. Einschränkungen:
StringBuilder
) genau wiedergegeben. Erweiterungsmethoden:
Der Einfachheit halber können Sie erwägen, eine Erweiterungsmethode für die Klasse Object
zu implementieren, um den Größenabruf zu vereinfachen:
<code class="language-csharp">public static int GetEstimatedByteSize(this object obj) { RuntimeTypeHandle th = obj.GetType().TypeHandle; return *(*(int**) &th + 1); }</code>
Bitte beachten Sie, dass diese Erweiterungsmethode mit Vorsicht verwendet werden sollte und nicht garantiert werden kann, dass sie für alle Typen und Szenarien korrekt ist.
Das obige ist der detaillierte Inhalt vonWie kann ich die Bytegröße von C#-Objekten abschätzen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!