C# 什么;仅限初始设置器“;提供,与C中的readonly有什么区别#
我可以定义如下所示的类:C# 什么;仅限初始设置器“;提供,与C中的readonly有什么区别#,c#,c#-9.0,C#,C# 9.0,我可以定义如下所示的类: public class MyClass { public int Id { get; } public MyClass(int id) => Id = id; } 我必须从构造函数中定义Id,它将是只读的 但是,如果我想在C#9.0中使用Init-only setters,它是什么?我如何使用它 public class MyClass { public int Id { get; init; } } 简言之: var obj=新MyClass
public class MyClass
{
public int Id { get; }
public MyClass(int id) => Id = id;
}
我必须从构造函数中定义Id
,它将是只读的
但是,如果我想在C#9.0
中使用Init-only setters
,它是什么?我如何使用它
public class MyClass
{
public int Id { get; init; }
}
简言之:
var obj=新MyClass
{
Id=42//完全正常
};
对象Id=43;//不好,我们没有初始化
在这种情况下很简单,与使用构造函数参数没有太大区别,但在一些更复杂的场景中很有用,您不需要200个构造函数参数,但希望它在构造后外观上是不可变的。仅初始化设置器提供一致的语法来初始化对象的成员。属性初始值设定项可以明确哪个值正在设置哪个属性。缺点是这些属性必须是可设置的 这样,您就不需要在开始时提供值和构造函数,并且可以在之后提供:
var myClass = new MyClass
{
Id = 10
}
它将被密封,你不能再改变它了
myClass.Id = 43; // not allowed
阅读