日期:2014-05-17  浏览次数:20624 次

刚才调试里发现一个奇怪现象,list自动增长
刚才调试里发现一个奇怪现象 不知道大家感兴趣不!!!

首先说明一下.有一个帐户类中定义了一个数据库中的字段列表
C# code

//数据表原有字段
        List<System.String> _listField=new List<System.String>();
/// <summary>
        /// 数据表字段
        /// </summary>
        public List<System.String> FieldList
        {
            get 
            { 
                
                _listField.Add("AutoID");
                
                _listField.Add("AccountName");
                
                _listField.Add("Password");
                
                _listField.Add("RoleID");
                
                _listField.Add("Email");
                
                _listField.Add("Mobile");
                
                _listField.Add("IsSystem");
                
                _listField.Add("LoginCount");
                
                _listField.Add("LastLoginIP");
                
                _listField.Add("LastLoginArea");
                
                _listField.Add("LastLoginTime");
                
                _listField.Add("AutoTimeStamp");
                
                 
                 return _listField;
            }
        }

...

然后有段更新模型的代码
public override bool UpdateModel<T>(T model)
        {
            bool bolReturn = false;
            //更新需要一个主键值
            int intIDKey = new int();
            //数据表名称
            string strTableName = string.Empty;
            //数据表字段
            List<string> listField = new List<string>();

            Type modelEntityType = model.GetType();
            PropertyInfo[] arrProperty = modelEntityType.GetProperties();
            StringBuilder builderSQL = new StringBuilder();
            List<SqlParameter> listParams = new List<SqlParameter>();

            foreach (PropertyInfo property in arrProperty)
            {
                //指定的数据库表名
                if (property.Name == "DBTableName")
                {
                    object obj = property.GetValue(model, null);
                    strTableName = obj == null ? string.Empty : obj.ToString();
                }
                //指定的数据表字段
                if (property.Name == "FieldList")
                {
                    object obj = property.GetValue(model, null);
                    listField = (List<string>)obj;
                }
                //指定的主键
                if (property.Name == "AutoID")
                {
                    object obj = property.GetValue(model, null);
                    intIDKey = obj == null ? 0 : Convert.ToInt32(obj);
                }
            }
神奇的事件就出现在FieldList listField 上面


第一次查看model

第二次查看

第三次查看


啥也没动.就是三次查看model数据.发现list自动增长了.




------解决方案--------------------
应该如下设置
C# code
   private List<string> _ss=new List<string> ();

            public List<string> ss
            {
                get 
                {
                    if (_ss.Count > 0)
                    {
                        _ss.Clear();
                    }
                    else
                    {
                        _ss.Add("1");
                        _ss.Add("2");
                    }
                    return _ss;
                }
                
            }

------解决方案--------------------
你是不是不断的拖动断点导致了重复添加数据,那就没错啊