C#不允许实例字段初始值设定项引用另一个字段.
例如,此代码无效:
例如,此代码无效:
class A { string s1 = ""; string s2 = s1; }
因为“s2”引用“s1”.
但为什么不允许这样做呢?
我的第一个想法是C#规范不保证任何初始化顺序,但根据规范,顺序是声明的顺序:
The variable initializers are executed in the textual order in which they appear in the class declaration.
因此,如果订单是确定性的,那么这类代码的缺陷可能是什么?
在此先感谢您的帮助.
编辑:
根据Hps,0xA3和Peter的答案:
>继承方案中的初始化顺序可能非常混乱,
>实现这样的功能需要编译器开发团队的一些资源,但收效甚微,
>由于逻辑原因,不可能使用方法或属性(感谢Peter),因此为了保持一致性,字段也是如此.
解决方法
本文可能会回答您的问题.