问题描述
- C# 一个全局变量总是自动变成初始值
-
C# 一个全局变量总是自动变成初始值
如题,在class中定义了一个枚举类型的变量,public partial class XXXXDlg : Form { private enum POSOFITEMICONSTYLE { POSLARGEICONS, POSSMALLICONS, POSLIST, POSTITLE, POSDETAILS }; private static POSOFITEMICONSTYLE iCurrentSelectedItemIconStyle = new POSOFITEMICONSTYLE ( ); }
我在某些方法中给iCurrentSelectedItemIconStyle赋过值了(调试时也确实看到它的值已经改变了),但当用到iCurrentSelectedItemIconStyle时,它又变成了初始值POSLARGEICONS。
赋值时和使用时,当前的Form是没有关闭的,Form周期还没有结束的。。。
小弟新手,一直没搞明白这是为什么,所以来向各位大神求救。
解决方案
和form关闭没有关闭没有关系,静态变量的生存周期是贯穿整个程序的。
所以你应该检查你在别的地方有没有重新对它设置值,比如构造函数,formload或者别的类。
解决方案二:
不用static 的时候,也是这样的现象。。
解决方案三:
static变量,当你访问到它所在的类时,就会被初始化
解决方案四:
我估计你是多次赋值了,把iCurrentSelectedItemIconStyle做成get,set属性,在set中设置个断点或进行监视看看是什么时候赋值改变了原值吧
时间: 2024-12-03 06:39:17