c# – 对象初始值设定项中的只读字段
发布时间:2020-12-15 18:24:49 所属栏目:百科 来源:网络整理
导读:我想知道为什么不可能做到以下几点: struct TestStruct{ public readonly object TestField;}TestStruct ts = new TestStruct { /* TestField = "something" // Impossible */}; 对象初始值设定项不应该能够设置字段的值 ? 解决方法 对象初始化程序在内部
我想知道为什么不可能做到以下几点:
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但具有不同的场景) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |