2011-11-01 46 views
0

可能重複:
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是雙重類型。

回答

7

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