2009-05-14 4 views
2

Gibt es eine Möglichkeit, die Größe einer Instanz (oder der Klasse, die mir nichts ausmacht) in C# zu bekommen?Instanzgröße in C#

Zum Beispiel weiß ich in Delphi jedes Objekt hat einen Zeiger auf die virtuelle Methode Tabelle der Klasse, ein Zeiger für jede Schnittstelle, die es implementiert und natürlich die Felder der Klasse.

Nach this grundlegende Objektgröße ist 12 Bytes in x86, aber, gibt es irgendwelche "Regel", um es richtig zu Größe?

+1

Nur neugierig: warum? Wofür verwenden Sie das? –

+2

Duplizieren: http://stackoverflow.com/questions/207592/getting-the-size-of-a-field-in-bytes-with-c#207605 –

+0

So gibt es keine Möglichkeit, es "theroretisch" zu berechnen, nur durch Messen mit dem GC? –

Antwort

3

Es hängt davon ab, was Sie suchen. Wenn Sie herausfinden möchten, wie groß ein Typ/Objekt für den Zweck der Interop mit nativem Code sein wird, können Sie Marshal.SizeOf() verwenden. Abgesehen davon gibt es keine definitive Möglichkeit, die Größe eines Objekts zu messen.