我在record中定义了一个属性public bool? Enable{get; init}。在创建record后,我闯入VS调试器并尝试编辑其值。在这样做时,它给出了以下错误:CS8852: Init-only property or indexer can only be assigned in object initializer...调试器不应该在内存中编辑吗?为什么不是这样?
record
public bool? Enable{get; init}
CS8852: Init-only property or indexer can only be assigned in object initializer...
vql8enpb1#
我们可以看到init的定义:在C# 9和更高版本中,init关键字定义属性或索引器中的访问器方法。仅init-only setter仅在对象构造期间为属性或索引器元素赋值。这强制实现了不变性,因此一旦对象初始化,就不能再次更改。因此,如果在调试时试图修改其值,它将报告错误。这个link可以给予更多的信息。希望它能对你有所帮助。
1条答案
按热度按时间vql8enpb1#
我们可以看到init的定义:
在C# 9和更高版本中,init关键字定义属性或索引器中的访问器方法。仅init-only setter仅在对象构造期间为属性或索引器元素赋值。这强制实现了不变性,因此一旦对象初始化,就不能再次更改。
因此,如果在调试时试图修改其值,它将报告错误。
这个link可以给予更多的信息。希望它能对你有所帮助。