【发布时间】:2017-06-26 13:06:40
【问题描述】:
警告!对不起,我英语不好! 在 struct 中使用固定数组:
[StructLayout(LayoutKind.Explicit, Size = 12)]
public unsafe struct union_reg
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 12)]
[FieldOffset(0)]
public fixed byte r[12];
[FieldOffset(0)]
public fixed UInt16 rp[6];
}
尝试通过指针数组创建和访问元素:
union_reg reg = new union_reg();
byte*[] r = new byte*[9] { ®.r[rB], ®.r[rC], ®.r[rD], ®.r[rE], ®.r[rH], ®.r[rL], &rhl, ®.r[rA], ®.r[6] };
如果我在函数中声明它,一切都很好,但如果我尝试在类中声明它,我会收到错误 CS1666。请帮忙解决问题!
const byte rB = 1;
const byte rC = 0;
const byte rD = 3;
const byte rE = 2;
const byte rH = 5;
const byte rL = 4;
const byte rA = 7;
const byte rF = 6;`
【问题讨论】:
-
尝试制作快速算法。模拟旧 CPU。
-
我无法重现错误:rB、rC、rD 等是如何定义的?
标签: c# arrays pointers fixed unsafe