Maf*_*fii 1 c# constructor properties roslyn c#-6.0
为什么是这样:
public int X { get; } = 5
public int Y { get; } = X;
Run Code Online (Sandbox Code Playgroud)
不可能?
因为手动执行:
public TestClass()
{
X = 5;
Y = X;
}
Run Code Online (Sandbox Code Playgroud)
工作,(显然?)这样做:
public static int X { get; } = 5;
public static int Y { get; } = X;
Run Code Online (Sandbox Code Playgroud)
有没有办法让第一个例子进行编译,还是我必须在ctor中手动完成?
(我真正的问题要复杂得多,不仅仅是整数,而是用于创建其他实例的实例,但这个例子更容易讨论)
这是不可能的原因是这些初始化是在调用构造函数之前完成的.所以它发生在静态上下文中.该对象尚未完全初始化,尚无this参考.所以你不能访问像这样的非静态属性X.
出于同样的原因,它适用于第三个示例中的静态属性.
所以我没有看到解决方法,但在构造函数中进行这种初始化.