一尘不染

C#中的C ++联合

c#

我正在将用C ++编写的库转换为C#,并且关键字“联合”存在一次。在结构中。

将其转换为C#的正确方法是什么?它是做什么的?看起来像这样;

struct Foo {
    float bar;

    union {
        int killroy;
        float fubar;
    } as;
}

阅读 252

收藏
2020-05-19

共1个答案

一尘不染

您可以为此使用显式字段布局:

[StructLayout(LayoutKind.Explicit)] 
public struct SampleUnion
{
    [FieldOffset(0)] public float bar;
    [FieldOffset(4)] public int killroy;
    [FieldOffset(4)] public float fubar;
}

未经测试。这个想法是两个变量在您的结构中具有相同的位置。当然,您只能使用其中之一。

有关结构教程的联合的更多信息

2020-05-19