C联合在C#

我正在翻译一个用C写成的库C#,关键字’union’存在一次。在结构中。

将它翻译成C#的正确方法是什么?它做什么?它看起来像这样;

struct Foo {
    float bar;

    union {
        int killroy;
        float fubar;
    } as;
}
最佳答案
您可以使用显式字段布局:

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

未测试。想法是两个变量在你的结构中有相同的位置。你当然可以只使用其中之一。

更多信息关于工会在struct tutorial

转载注明原文:C联合在C# - 代码日志