c#ToList疑惑,求解

kikop_freedom 2011-01-16 12:57:45
http://blog.csdn.net/yhm_js/archive/2011/01/16/6144106.aspx
...全文
634 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
kikop_freedom 2011-01-19
  • 打赏
  • 举报
回复
谢谢各位的阅读:
@starfd:正解

@a13062331830:.ToList()会新开辟一个内存空间,问题的本质在于此,而不是移动代码这个原因,不然我怎么会写两个测试代码,让大家比较呢,请细看!

结贴::.net中ToList()会新开辟一个内存空间,大家用时请注意


哥子谭 2011-01-17
  • 打赏
  • 举报
回复
dept = new Department();
method = new Method();
method.Datas = dept.BakDatas;

楼主你上面这句,你实例化以后个数不是为0嘛,你赋值有用嘛。你后面以没有给method.Datas赋其他的值。
你把这句method.Datas = dept.BakDatas;
移动到btnTestAdd_Click事件里面的dept.BakDatas = BackDatas.ToList();
这句后面,就不会出现这种情况了
xixihaha_2011_098 2011-01-16
  • 打赏
  • 举报
回复

#region ListToDataTable
/// <summary>
/// ListToDataTable
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="list"></param>
/// <returns></returns>
public static DataTable ToDataTable<T>(this IEnumerable<T> list)
{
List<PropertyInfo> pList = new List<PropertyInfo>();
Type type = typeof(T);
DataTable dt = new DataTable();
Array.ForEach<PropertyInfo>(type.GetProperties(), p => { pList.Add(p); dt.Columns.Add(p.Name, p.PropertyType); });
foreach (var item in list)
{
DataRow row = dt.NewRow();
pList.ForEach(p => row[p.Name] = p.GetValue(item, null));
dt.Rows.Add(row);
}
return dt;
}
#endregion

ListToDataTable可以参考一下
  • 打赏
  • 举报
回复
顺带说下这跟 ToList貌似没半毛钱关系....

另外你可以是下
BackDatas 和 BackDatas.ToList()是不是指向同一个引用
  • 打赏
  • 举报
回复
public class Department
{
public List<Data> BakDatas = new List<Data>();
}

你method.Datas = dept.BakDatas

InitInstance(); //你已经给method.Datas 传递了一个空的List<Data>地址
List<Data> BackDatas = initBackDatas();//你又new了一个List<Data>
dept.BakDatas = BackDatas.ToList();//你把新的List地址给了dept,此时method.Datas的旧地址跟你的新List的地址有半毛钱关系??


dept.BakDatas.Clear();
dept.BakDatas.AddRange(BackDatas );//还是原先Dept分配到的地址
pywepe 2011-01-16
  • 打赏
  • 举报
回复
他没有给你看代码
只是一个URL
龍过鸡年 2011-01-16
  • 打赏
  • 举报
回复
你知不知道?

我们都是一分钟上下好几十万的人,你居然还让我们看代码,过分啊 过分! :p
wangsong145 2011-01-16
  • 打赏
  • 举报
回复
楼主要问什么问题啊
wuyq11 2011-01-16
  • 打赏
  • 举报
回复
什么问题

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧