首先,我問了一個關於課堂大小的問題,我得到了答案,我也明白這一點。 現在當我看到WinDbg顯示同樣大小的012d時,我感到困惑,因爲我讀過結構不包含SyncBlock
,那麼結構的大小應該比類的大小少8個字節。爲什麼WinDbg爲c#類和結構顯示相同的大小?
我的第一個問題:
它是正確的,結構沒有SyncBlock
場?
所以,以下是我的課:
public class MyClass
{
public int Age { get; set; }
public double Amount { get; set; }
public string Name { get; set; }
}
和結構是:
public struct MyStruct
{
public int Age { get; set; }
public double Amount { get; set; }
public string Name { get; set; }
}
使用WinDbg我得到的size = 40
兩個MyClass的和MYSTRUCT。
對於類我理解它,因爲它具有:
SyncBlock = 8 bytes
TypeHandle = 8 bytes
String ref = 8 bytes
Int32 = 4 bytes
Double = 8 bytes
Total = 36 bytes
,並因爲它需要挑選8字節boundry變成40個字節,但爲什麼是40個字節的結構也?
我在64位系統上運行。 以下是輸出從WinDbg的:
預期的結果這是如何比你的其他問題不同昨天發佈? http://stackoverflow.com/questions/20084232/how-to-determine-size-of-an-object-c – paqogomez
@paqogomez我沒有結構在我的最後一個問題。 – Kush
當然,但你爲什麼認爲他們必須是不同的尺寸? –