list集合想到的
来源:互联网 发布:小米笔记本装linux 编辑:程序博客网 时间:2024/05/29 10:23
今天一个小练习写了这么几行代码
DataTable dt = SqlHelper.ExecuteDataTable("select * from users");
List<Models.Users> users = new List<Models.Users>();
Users user = new Users();
foreach (DataRow row in dt.Rows)
{
user.Name=row["Name"].ToString();
user.LoginId=row["LoginId"].ToString();
user.Id = Convert.ToInt32(row["Id"]);
user.BirthDate = Convert.ToDateTime(row["BirthDate"]);
users.Add(user);
}
猜猜发生了什么事,
当然users集合里面记录的永远都是同样的数据。
之前却没注意过,去查了下list集合:Add( ) 在List中添加一个对象的公有方法。
突然明白了list集合里面存储的都是一个一个的对象。每个位置都存储了这么一个对象。如果后面对象变化了,里面的东西当然要变化了!
然后我把Users user = new Users(); 放到循环里面,问题来了,在第二次循环还是后,之前的user对象哪里去了呢?(正常即使中间gc了,应该也是没有销毁,因为list中有东西引用着他呢),反正是user这个名字里面的东西都变了,但是集合里面第一个对象还是第一个对象。
为什么呢,
写上面那句话的时候,想起来之前看过的CLR,突然明白了。
第一个对象仍然存在于托管堆上,只是user这个变量不在引用他了而已,引用他的是list对象中的第一个索引。 大概是这样理解吧。
- list集合想到的
- 由List.contains(Object, obj)想到的
- 集合List的练习
- 集合List的删除
- List集合的排序
- java的list集合
- java的List集合
- List集合的引入
- groovy 的集合 List
- 想到的.....
- 想到的
- set集合和 list集合 的区别
- List集合、Map集合、数组的排序
- 集合框架--List集合的方法
- List、Set集合Map集合的遍历
- set集合和list集合的区别
- set集合和list集合的区别
- Java 集合List的排序
- <s:action 的死循环
- 第一篇博客写给自己
- 简单的tomcat+oracle+jsp用例
- 鲲*棠
- SVN 上传.a 文件操作
- list集合想到的
- 详细介绍Linux指令od
- 中概股回归表明中国不差钱?
- Android系统启动过程
- Dynamic len
- ARM 指令种类
- 通过内存解析String的基本原理
- Error:(16, 0) Gradle DSL method not found: 'android()'
- mysql 插入时判断重复时更新