![]() |
1
14
这似乎取决于线条的顺序。此代码有效:
当此代码不起作用时(它抛出
因此,显然不存在循环依赖的规则。不过,编译器没有抱怨,这很奇怪… 编辑-文件之间发生了什么?如果我们声明这两个类:
并尝试使用以下代码访问它们:
我们得到这个输出:
所以初始化
如果我们没有周期性的依赖关系,一切都会正常工作。 编辑:以防万一你没有阅读评论, Jon Skeet 提供了一个非常有趣的阅读: The differences between static constructors and type initializers . |
![]() |
2
16
见 section 10.4 of the C# spec 对于这里的规则:
换句话说,在您的示例中,“b”被初始化为其默认状态(空),因此在“a”的初始值设定项中对它的引用是合法的,但会导致NullReferenceException。 这些规则与Java的不同(参见 section 8.3.2.3 of the JLS 对于Java的前向引用规则,这是更具限制性的。 |
![]() |
3
2
就我个人而言,我会去掉静态初始值设定项,因为它不清楚,然后添加一个静态构造函数来初始化这些变量。
那么你就不必去猜测发生了什么,你的意图也很清楚。 |
![]() |
4
0
是的,你很幸运。C似乎按照代码在类中出现的顺序执行代码。
会有用的,但是…
会失败。 我建议将所有依赖项放在一个地方,静态构造函数就是这个地方。
|
|
recursivePython · C#发布中不包含依赖项 6 年前 |
![]() |
ChumboChappati · UML:组合或依赖 6 年前 |
![]() |
PCL · 使用Nexus工件库的多项目gradle构建 6 年前 |
![]() |
novafluff · 依赖于打包为war的模块,需要类 6 年前 |