ded*_*cos 5 c# struct pointers fixed-size-types
是否有任何错误CS1663的解决方法("固定大小缓冲区类型必须是以下之一:bool,byte,short,int,long,char,sbyte,ushort,uint,ulong,float或double.")?
我需要从另一个blittable自定义类型结构声明一个不安全的固定数组,但我陷入了这个编译错误.
显示一些代码来阐明下面的问题.
struct s1
{
byte _b1;
byte _b2;
}
unsafe struct s2
{
fixed s1 _s1[5]; // CS1663 here...
}
Run Code Online (Sandbox Code Playgroud)
请注意,这两个结构是blittable,所以错误对我没有任何意义.
任何人都知道我能做什么?
谢谢.
这是固定大小缓冲区的限制。
固定数组可以采用常规结构成员允许的任何属性或修饰符。唯一的限制是数组类型必须是bool、byte、char、Short、int、 long、sbyte、ushort、uint、ulong、float或double。
您只能使用该类型,但不能使用组合(例如struct仅包含该类型)。无论您的类型是否为 bittable,都没有区别。你就是不能使用它。
那么您就不能将您的自定义用于struct固定大小的缓冲区。
解决方法?嗯,是的,可能是。您可以更改代码结构并使用如下内容:
unsafe struct s2
{
fixed byte _b1[5];
fixed byte _b2[5];
}
Run Code Online (Sandbox Code Playgroud)