如何将 c++ 联合类型转换为 c# 代码? [复制]

Posted

技术标签:

【中文标题】如何将 c++ 联合类型转换为 c# 代码? [复制]【英文标题】:How to convert c++ union type into c# code? [duplicate] 【发布时间】: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 类型。

【问题讨论】:

【参考方案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;

【讨论】:

我已经浏览过了,但它没有显示结构内数组的示例。

以上是关于如何将 c++ 联合类型转换为 c# 代码? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何将结构从 C++ 迁移到 C#

如何将 C++ 转换为 C# 代码而 statmernt 代码递减

当我们使用winapis将字符串作为参数传递时,如何将c#字符串转换为c++字符串

如何将 C++ 数字格式转换为 C# 数字格式?

在 C# 中使用非原始类型重新创建 C++ 联合类型时出现对齐错误

如何将带有 Union 的 C++ 结构转换为 C#?