c# - 如何将 C++ union 类型转换为 C# 代码?

标签 c# c++ unions

<分区>

Possible Duplicate:
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# 没有与 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;
}

关于c# - 如何将 C++ union 类型转换为 C# 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7964176/

相关文章:

c - 为什么取消引用指向外部 union 的指针是未定义的?

c++ - 如何从 C++ 源代码中提取所有类型定义、结构和 union

c# - 构造函数和继承

c# - 如何在 Windows 上向 Perl 发送信号?

c++ - 编码和读取 ID3 标签

c++ - 在 Boost Asio 缓冲区中搜索

c - 结构和 union 名称冲突

c# - DataGridViewComboBoxCell - 需要点击 2 次才能获取当前选定的索引

c# - NHibernate 3.2 Loquacious API 入门

c++ - 我们可以从函数中按值返回具有已删除/私有(private)复制/移动构造函数的对象吗?