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周期还没有结束的。。。
小弟新手,一直没搞明白这是为什么,所以来向各位大神求救。

4个回答

和form关闭没有关闭没有关系,静态变量的生存周期是贯穿整个程序的。
所以你应该检查你在别的地方有没有重新对它设置值,比如构造函数,formload或者别的类。

static变量,当你访问到它所在的类时,就会被初始化

不用static 的时候,也是这样的现象。。

我估计你是多次赋值了,把iCurrentSelectedItemIconStyle做成get,set属性,在set中设置个断点或进行监视看看是什么时候赋值改变了原值吧

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问