在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
我们常常在网上看到说我们类中如果有静态变量和静态构造函数,那么先执行静态变量,然后静态函数。但是为什么呢?真的是这样吗? 例子代码: public class BaseClass { public static int s1 = 10; static BaseClass() { s1 = 11; } } static void Main(string[] args)
我们定义一个类并调用:我们都知道s1结果是 5;单点调试时 第一步:BaseClass.s1 = 5; 第二步: public static int s1 = 10; 第三步: s1 = 11; 这样看说先执行先执行静态变量,然后静态函数 好像也没问题。 我们通过IL言语发现其实不然:
.method private hidebysig specialname rtspecialname static 发现了什么,构造函数中把对 s1 = 10;的赋值放到了构造函数中。
总结:运行时s1分配内存空间并赋默认值,然后执行构造函数,但是构造函数中静态变量的赋值是有顺序的。先赋值10再11
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论