当结构中的一个显式布局字段是对象时会发生什么?

时间:2016-01-08 10:02:24

标签: c# mono

编辑:以下所有内容都适用于Mono / Xamarin,但在使用TypeLoadException的.NET上崩溃

当field2打印到stdout时,每次运行程序时都会得到一个新的整数。这个值是什么意思?

class Program
{
    [StructLayout(LayoutKind.Explicit)]
    struct Data
    {
        [FieldOffset(0)]
        public object Field1;

        [FieldOffset(0)]
        public int Field2;
    }

    public static void Main()
    {
        var a = new Data();
        a.Field1 = new object();
        Console.WriteLine(a.Field2);
    }
}

1 个答案:

答案 0 :(得分:1)

这是一个指针 IMO,您应该避免在显式布局结构中使用引用类型字段。