我有一个结构体数组,需要获取它的字节大小。
在C++中,可以使用sizeof()函数来实现。
但是我需要在C#中实现。
谢谢。
我有一个结构体数组,需要获取它的字节大小。
在C++中,可以使用sizeof()函数来实现。
但是我需要在C#中实现。
谢谢。
Marshal.SizeOf(typeof(MyStruct)) * array.Length
有一个sizeof
运算符,但它只能在不安全的上下文中使用。
还有一种与其他答案提出的方法不同的方法,即:
对于所有其他类型,包括结构体,
sizeof
运算符只能在不安全的代码块中使用。虽然可以使用Marshal.SizeOf
方法,但该方法返回的值并不总是与sizeof
返回的值相同。Marshal.SizeOf
返回类型进行封送后的大小,而sizeof
返回由公共语言运行时分配的大小,包括任何填充。
示例:
unsafe
{
int size = sizeof(MyStruct)*myArray.Length;
}
public fixed Byte smthng[12];
。如果我写int a = smthng.Lenght;
,它会触发编译器错误。sizeof()
也不起作用。那么我做错了什么? - Hi-AngelSystem.Runtime.InteropServices.Marshal.SizeOf(typeof(YourType).GetField("smthng").FieldType)
- user541686