CS8852 无法在 VS 调试器中编辑 init 属性的值

问题描述 投票:0回答:2

我在

public bool? Enable{get; init}
中定义了一个属性为
record
。创建
record
后,我进入 VS 调试器并尝试编辑其值。这样做时会出现以下错误:

CS8852: Init-only property or indexer can only be assigned in object initializer...

调试器不是应该在内存中编辑吗?为什么不是这样。

c# debugging visual-studio-debugging vscode-debugger
2个回答
1
投票

我们可以看到init的定义:

在 C# 9 及更高版本中,init 关键字定义属性或索引器中的访问器方法。仅 init-only setter 仅在对象构造期间为属性或索引器元素分配值。 这强制了不变性,因此一旦对象被初始化,就不能再次更改。

所以调试时如果尝试修改其值会报错。

这个链接可以提供更多信息。希望可以帮到你。


0
投票

这是Visual Studio的一个缺点。 一个可能的“解决方法”是使用 Rider,如果您有许可证 - 在调试会话中,将鼠标悬停在

record
的实例上,展开工具提示以查看各个字段,右键单击您的属性
Enable
并选择 设置值....

© www.soinside.com 2019 - 2024. All rights reserved.