C#不允许实例字段初始化程序引用另一个字段。例如,此代码无效:
class A
{
string s1 = "";
string s2 = s1;
}
因为“s2”引用“s1”。
但为什么这是不允许的?
我的第一个想法是C# 规范不保证任何初始化顺序,但根据规范,顺序是声明的顺序:
变量初始化器按照它们在类声明中出现的文本顺序执行。
那么,如果顺序是确定性的,那么这种代码的缺陷是什么?
在此先感谢您的帮助。
编辑 :
根据Hps、0xA3和Peter的回答:
继承场景中的初始化顺序可能非常混乱,
实现这样的功能需要编译器开发团队提供一些资源,但收益甚微,
出于逻辑原因,不可能使用方法或属性(感谢Peter),因此为了保持一致性,字段也是如此。