如何将C++联合类型转换为C#代码?
问题描述:
#define AVEC3(T) union { T v3[3]; struct { T x,y,z; }; }
#define AMAT3x3(T) union { \
T v9[9], m3x3[3][3]; \
struct { T v3x[3], v3y[3], v3z[3]; }; \
struct { AVec3<T> vecx, vecy, vecz; }; \
struct { AVec3<T> right, up, back; }; \
struct { T xx, xy, xz, yx, yy, yz, zx, zy, zz; }; \
我不知道如何将代码从上面(C++)转换成C#版本。假设T是双重类型。
答
C#不具有相似的概念来union
,但有一招能在这里得到相同的功能看到更多的地方使用FieldOffset
属性:C# equivalent to C "union"? from MSDN
从MSDN后(简化了一下):
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Explicit)]
struct ByteArray {
[FieldOffset(0)]
public byte Byte1;
[FieldOffset(0)]
public int Int1;
[FieldOffset(0)]
public int Int2;
}
我已经通过它,但它并没有显示结构内数组的示例。 – user976385