做题之前没有遇到过这类问题。
因此想了一会儿,还好回来验证了一下,发现自己做对了。
后面是我的思路,欢迎大家指正。
摘抄一段帮助:
静态成员在第一次被访问之前并且在任何静态构造函数(如调用的话)之前初始化。
程序的入口点在A,因此在程序启动时候X初始化,由于计算X的值需要引用B.Y,
接着初始化B.Y。B.Y=A.X + 1,此时A.X正在初始化过程中,因此相当于未定义,取int类型默认值0。
所以Y=1, X=-1。
打印结果: 1,-1
因此想了一会儿,还好回来验证了一下,发现自己做对了。
后面是我的思路,欢迎大家指正。
1 using System;
2
3 namespace Training
4 {
5 public class A
6 {
7 public static int X = B.Y - 2;
8 public static void Main()
9 {
10 Console.WriteLine("{0},{1}", A.X, B.Y);
11 }
12 }
13
14 public class B
15 {
16 public static int Y = A.X + 1;
17 public B()
18 {}
19 }
20 }
21
2
3 namespace Training
4 {
5 public class A
6 {
7 public static int X = B.Y - 2;
8 public static void Main()
9 {
10 Console.WriteLine("{0},{1}", A.X, B.Y);
11 }
12 }
13
14 public class B
15 {
16 public static int Y = A.X + 1;
17 public B()
18 {}
19 }
20 }
21
摘抄一段帮助:
静态成员在第一次被访问之前并且在任何静态构造函数(如调用的话)之前初始化。
程序的入口点在A,因此在程序启动时候X初始化,由于计算X的值需要引用B.Y,
接着初始化B.Y。B.Y=A.X + 1,此时A.X正在初始化过程中,因此相当于未定义,取int类型默认值0。
所以Y=1, X=-1。
打印结果: 1,-1