现在在做一个类似WEB中会员注册的WINFORM功能
会员注册需要提交的数据项比较多,现在存放到类中的精态变量里了
每个会员都要提交一次不同的信息
这样我就打算用arrayList.add(类)来保存这些临时数据,方便各个窗体调用(不能使用文件或数据库保存这些临时数据)
出现的问题:
每次类变量赋新值的时候arrayList里的对应数据也跟着变化
所以用深复制和浅复制都测试过,都无法解决.
请指点一下
public class userinfo()
{
private static string _username;
public string username
{
get{return _username;}
set{_username=value;}
}private static string _age;
public string age
{
get{return _age;}
set{_age=value;}
}
}
public class saveUserinfo
{
private static ArrayList _al_userinfo;
public string al_userinfo
{
get{return _al_userinfo;}
set{_al_userinfo=value;}
}
}public class main()
{
userinfo user=new userinfo();
user.username="aaa";
user.age="22";
saveUserinfo.add(user);
}

解决方案 »

  1.   


    private static string _username; private static string _age; 这两个不要用static 
      

  2.   

    静态变量就相当于全局变量,一个地方对它作了修改,另外一个地方再访问得到的是修改后的值.去掉static
      

  3.   

    好像是你没有必要把_username\_al_userinfo等设置为静态变量(设置为静态变量的理由这里没有体现出来).
      

  4.   

    你在用到这些变量时,用过以后要清空,例如 aa = null,赋值值除外
    private  string  _aa;
    public static string aa
    {
       set{ _aa = value;}
       get{ return _aa;}
    }
      

  5.   

    去掉static,如果用static所有的对象共享一个内存区 一个对其修改 它就变化了 
    也就是static能保留中间值
      

  6.   

    static 不要随便用,只有确定只需要一个唯一对象的时候才能用这个,好像设计模式里面的单件模式就是利用static确保唯一对象.