c# – 对象初始值设定项中的只读字段

前端之家收集整理的这篇文章主要介绍了c# – 对象初始值设定项中的只读字段前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想知道为什么不可能做到以下几点:
struct TestStruct
{
    public readonly object TestField;
}

TestStruct ts = new TestStruct {
    /* TestField = "something" // Impossible */
};

对象初始值设定项不应该能够设置字段的值

解决方法

对象初始化程序在内部使用临时对象,然后将每个值分配给属性.拥有一个只读字段会破坏它.

以下

TestStruct ts = new TestStruct 
{
     TestField = "something";
};

会翻译成

TestStruct ts;
var tmp = new TestStruct();
tmp.TestField = "something"; //this is not possible
ts = tmp;

(这是带有对象初始化器的answer from Jon Skeet explaining the usage of temporary object但具有不同的场景)

猜你在找的C#相关文章