【问题标题】:How to convert c++ union type into c# code? [duplicate]如何将 c++ 联合类型转换为 c# 代码? [复制]
【发布时间】:2011-11-01 08:45:23
【问题描述】:

可能重复:
C++ union in 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 类型。

【问题讨论】:

    标签: c# c++ unions


    【解决方案1】:

    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;
    }
    

    【讨论】:

    • 我已经浏览过了,但它没有显示结构内数组的示例。
    猜你喜欢
    • 2019-05-25
    • 1970-01-01
    • 2017-01-01
    • 1970-01-01
    • 2013-04-15
    • 2021-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多