2011-04-13 109 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; 
}