C# 单例模式的不同写法对静态变量的影响
来源:互联网 发布:淘宝联盟站长 编辑:程序博客网 时间:2024/05/29 08:00
今天遇到一个非常奇怪的问题,调试了半天都没搞好,最后只好加了一些判断才搞定,回过头来找原因,才发现原因让我非常无语
于是对单例模式和静态变量做了一下测试,总结了一下规律
首先是C#6.0最新出来的写法,当执行构造函数时,Date2的值是正确的
然后,将Date2的顺序调整一下,改到类的末尾
然后就发现在构造函数执行的时候,Date2的值居然是DateTime的初始值了,我猜测如果是引用类型的变量,估计就是null了
继续尝试单例的第二种写法
可以看到,第二种写法的情况下,Date2也没有被初始化
再尝试第三种写法
用这种写法,Date2的值正确了
百度了一下,发现在没有写静态的构造函数时,静态变量的初始化是按文本的顺序执行的,所以第一次尝试是正确的,而后两次尝试不对
至于在非单例模式类的构造函数中,Date2的值都是正确的,不受顺序影响
所以单例模式还是老老实实按第三种写法比较好,不要偷懒
不过单例模式中写静态变量的估计也少,把静态变量都放到其他的类中就无所谓了,但是静态变量的初始化顺序问题可能还是需要注意的
0 0
- C# 单例模式的不同写法对静态变量的影响
- JAVA单聊模式的不同写法
- 内存分配方式(动态/静态)的不同对const变量(全局/局部)访问性的影响
- C#单例模式的三种写法
- C#单例模式的三种写法
- C#单例模式的三种写法
- C#单例模式的三种写法
- C#单例模式的三种写法
- C#单例模式的三种写法
- C#单例模式的三种写法
- C# 单例模式的五种写法
- C#单例模式的三种写法
- C#单例模式的三种写法
- C#单例模式的 几种写法
- 单例模式的写法
- 单例模式的写法
- 单例模式的写法
- 单例模式的写法
- 那些著名或非著名的iOS面试题(上)
- 121.LeetCode Best Time to Buy and Sell Stock(easy)[数组 动态规划]
- Android Studio系列教程二--基本设置与运行
- Web体系结构
- 亿级Web系统搭建——单机到分布式集群
- C# 单例模式的不同写法对静态变量的影响
- Android中Bitmap, Drawable, Byte,ID之间的转化
- 15电气郄慧敏vb作业计算一位数乘以一位数
- 一位数乘以一位数
- 9个循环3
- vb16
- JS的模仿块级作用域
- 铲雪车_SSL2334_欧拉回路
- storm分组总结