这是原始声明:
我希望将
这是原始声明:
[StructLayout(LayoutKind.Explicit, Size = 16)]
public unsafe struct X
{
[FieldOffset(0)] public ushort a;
[FieldOffset(2)] public fixed byte b[14];
};
我希望将
struct
设为只读,但我不知道如何编写数组的getter。 我能想到的唯一解决方案是编写一个getter方法:[StructLayout(LayoutKind.Explicit, Size = 16)]
public unsafe struct X
{
[FieldOffset(0)] private ushort a;
[FieldOffset(2)] private fixed byte b[14];
public ushort A { get { return a; } }
public byte B(int i) { fixed (byte* p = b) { return p[i]; } }
};
有没有可能为b编写一个getter 属性而不是一个getter 方法?
=== 更新 ===
我还想处理当存在多个数组字段的情况。 例如:
[StructLayout(LayoutKind.Explicit, Size = 24)]
public unsafe struct Y
{
[FieldOffset(0)] private ushort a;
[FieldOffset(2)] private fixed byte b[14];
[FieldOffset(16)] private fixed byte c[8];
public ushort A { get { return a; } }
public byte B(int i) { fixed (byte* p = b) { return p[i]; } }
public byte C(int i) { fixed (byte* p = c) { return p[i]; } }
};
是否可以编写获取b和c属性的getter方法,而不是getter方法?我想编写y.B[i]
和y.C[i]
,而不是y.B(i)
和y.C(i)
。