2011-04-13 76 views
6

結構的數組的我有結構的數組,我需要得到它的大小以字節大小以字節

在C++中,我可以使用的sizeof()

它使但我需要它C#

日Thnx

回答

11

Marshal.SizeOf(typeof(MyStruct)) * array.Length

+0

乘以arr.Length? ;-) – 2011-04-13 21:58:32

+0

@Mario:好的,修好了。 ;)@Downvoter:是這個原因嗎? – Mehrdad 2011-04-13 22:11:02

+0

我沒有明白。假設我有'公共固定字節smthng [12];'。如果我寫了例如'int a = smthng.Lenght;'它觸發編譯器錯誤。兩者都不能處理'sizeof()'。那麼我做錯了什麼? – 2014-10-08 15:39:29

5

還有就是sizeof操作。但是,它只能用於不安全的環境中。

還有由邁赫達德,namingly提出的方法的差異:

對於所有其它類型,包括結構,sizeof運算符只能在不安全的代碼塊中。儘管可以使用Marshal.SizeOf方法,但此方法返回的值並不總是與sizeof返回的值相同。 Marshal.SizeOf在封送類型後返回大小,而sizeof返回公共語言運行時分配的大小,包括任何填充。

source

實施例:

unsafe 
{ 
    int size = sizeof(MyStruct)*myArray.Length; 
}