繁体   English   中英

C# 初始化设置器不适用于 class 记录

[英]C# Init setters don't work on class records

我正在尝试在常规记录上使用初始化设置器,但它们似乎不起作用。 但是当我添加单词“struct”以使其成为记录结构时,它可以正常工作。 这是故意的吗? 这似乎很奇怪。

这似乎不是视觉故障,因为构建因此失败,并且重新启动 Visual Studio 没有任何区别。 添加空括号也无济于事。

使用记录的初始化设置器时出错

我正在尝试在常规记录上使用初始化设置器,但它们似乎不起作用。

您在记录中使用了 Primary Constructor 语法,并且与任何构造函数一样,任何时候使用new关键字创建实例(而不是with语法)都需要向构造函数提供值。 您还可以通过初始化语法初始化该值的事实只是主构造函数的参数也是一个init属性这一事实的产物。

但是当我添加单词“struct”以使其成为记录结构时,它可以正常工作。 这是故意的吗?

是的。 使您的记录成为struct时发生这种变化的原因是 C# 通常对struct具有不同的规则。 例如,结构总是有一个公共的默认(无参数)构造函数,而添加显式构造函数将从类中删除默认构造函数。 此外,结构不需要任何显式初始化:如果您从不使用new关键字,它们只会使用默认构造函数自动初始化。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM