2011-11-01 1 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가 double 형이라고 가정합니다.

답변

7

C#을 union 유사한 개념을 가지고 있지 않지만, FieldOffset 속성을 사용합니다 여기에 같은 기능 참조 자세한 내용을 얻을 수있는 트릭이있다 : (조금 단순화)은 MSDN 게시물에서 C# equivalent to C "union"? from 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