如何将C++联合类型转换为C#代码?

问题描述:

可能重复:
C++ union in C#如何将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; 
} 
+0

我已经通过它,但它并没有显示结构内数组的示例。 – user976385