编译器说我不能获取值类型';s只读字段

本文关键字:读字段 类型 不能 获取 编译器 | 更新日期: 2023-09-27 18:21:30

我有一个结构:

struct S {
    public readonly int Value1;
    public readonly int Value2;
    public S(int value1, int value2) {
        this.Value1 = value1;
        this.Value2 = value2;
    }
}

我试着取Value2:的地址

var s = default(S);
unsafe {
    var r = new IntPtr(&s.Value2);
}

但是我得到了一个编译器错误:

Cannot take the address of the given expression

我想我可以记下字段的地址吗?怎么回事?

编译器说我不能获取值类型';s只读字段

显然它不适用于只读字段。将S更改为:

struct S {
    public int Value1;
    public int Value2;
}

修复了问题。