C# 结构数组的大小(字节)

C# 结构数组的大小(字节),c#,C#,我有一个结构数组,我需要得到它的大小(字节) 在C++中,我可以使用siZeFor()< /P> 但是我需要它# thnx存在SizeOf运算符。但是,它只能在不安全的上下文中使用 另一个答案中提出的方法也存在差异,但令人惊讶的是: 对于所有其他类型,包括结构,sizeof运算符只能在不安全的代码块中使用。尽管可以使用Marshal.SizeOf方法,但此方法返回的值并不总是与SizeOf返回的值相同。Marshal.SizeOf返回类型封送后的大小,而SizeOf返回公共语言运行时分配的大小,

我有一个结构数组,我需要得到它的大小(字节)

在C++中,我可以使用siZeFor()< /P> 但是我需要它#


thnx

存在
SizeOf
运算符。但是,它只能在不安全的上下文中使用

另一个答案中提出的方法也存在差异,但令人惊讶的是:

对于所有其他类型,包括结构,sizeof运算符只能在不安全的代码块中使用。尽管可以使用Marshal.SizeOf方法,但此方法返回的值并不总是与SizeOf返回的值相同。Marshal.SizeOf返回类型封送后的大小,而SizeOf返回公共语言运行时分配的大小,包括任何填充

例如:

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

乘以阵列长度?;-)我不明白。假设我有
公共固定字节smthng[12]。如果我写,例如
inta=smthng.length它触发编译器错误。两者都不起作用
sizeof()
。那么我做错了什么?@Hi angle:那不是.NET意义上的“数组”,那是“固定大小数组”。啊。可以那么我如何得到它的大小呢?@Hi-Angel:你需要使用反射
System.Runtime.InteropServices.Marshal.SizeOf(typeof(YourType).GetField(“smthng”).FieldType)