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

本文关键字:类型转换 代码 c++ | 更新日期: 2023-09-27 18:12:51

可能重复:
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++联合类型转换为c#代码

C#与union没有相似的概念,但有一个技巧可以获得相同的功能。请参阅此处使用FieldOffset属性的更多信息:C#等效于C"并集"?来自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;
}