2011-08-22 41 views
0
Public Class A 
    Private aa As Integer 
    Dim bb As Integer 
    Public cc As Integer 
End Class 

Public Class B 
    Inherits A 

    Private dd As Integer 
    Dim ee As Integer 
    Public ff As Integer 
End Class 

Public Class C 
    Dim oA As New A 
End Class 

對象oA的大小是多少?
什麼,如果A類和B類包含方法?(我的意思是物體的大小)
什麼,如果繼承了B類包含重載方法?(物體的大小)
如果有什麼繼承了B類包含了相同的名稱變量A類?(物體的大小)

我需要理論上的答案。那些訪問說明符Private,Dim,Public在分配內存方面有什麼不同,因爲它們的範圍不同?
基於內存分配的方法是什麼?等等。如何確定一個對象的大小?

+0

也許這可以幫助您? http://stackoverflow.com/questions/324053/find-out-the-size-of-a-net-object –

回答

2
  • oA是一個變量持有一個引用,而不是一個對象;基準的大小取決於平臺,但通常爲4個字節在x86和x64上的8個字節是
  • 通過oA引用對象A型的,並且有3個整數,所以大小爲12個字節加上標準對象頭
  • 方法不會影響物體尺寸(不管它們是否是直接或繼承)
  • B類型的實例有6點的整數(3直接,3從A繼承);任何名稱重疊都不會影響它們存在的事實 - 因此大小爲24個字節加上標準對象標題
+0

對象頭的大小是多少?它將依賴於什麼? – dotNETbeginner

+0

@dotNETbeginner請參閱http://www.simple-talk.com/dotnet/.net-framework/object-overhead-the-hidden-.net-memory--allocation-cost/ –

相關問題