|
1
2
您想要什么是不可能的,因为在初始化属性之前会调用无参数构造函数。这
是与(的语法糖)相同的代码。。。
所以你需要一个构造函数
|
|
|
2
1
从代码中我可以看到 无参数类初始化 你的意思是 object initializers 。因此,对于您的用例,不,当您的初始化逻辑依赖于构造函数中的公共属性时,您不能使用对象初始化器。 原因很简单。对象初始值设定项只是为我们提供的一些语法糖。 SharpLab 我们马上就能看到这一点。 这里是“正常”C#代码:
然后,等效的降低的C#将如下所示。我只是在展示
在这里我们可以看到,对象初始值设定项变成了一个普通的构造函数调用,然后是一个属性赋值。因此,在属性获得新值并使用默认值之前,构造函数中的逻辑将已经运行。
因此,我建议在您的用例中坚持使用构造函数调用。理论上,setter中当然也可以有一些逻辑,但不必要地创建两个数组,setter应该是快速操作,这可能不是因为
|