3 回答

TA贡献1893条经验 获得超10个赞
是的,ToList将创建一个新列表,但因为在这种情况下MyObject是一个引用类型,所以新列表将包含对与原始列表相同的对象的引用。
更新SimpleInt新列表中引用的对象的属性也会影响原始列表中的等效对象。
(如果MyObject声明为a struct而不是a,class则新列表将包含原始列表中元素的副本,并且更新新列表中元素的属性不会影响原始列表中的等效元素。)

TA贡献1783条经验 获得超4个赞
来自Reflector'd来源:
public static List<TSource> ToList<TSource>(this IEnumerable<TSource> source)
{
if (source == null)
{
throw Error.ArgumentNull("source");
}
return new List<TSource>(source);
}
所以是的,您的原始列表将不会更新(即添加或删除),但引用的对象将会更新。

TA贡献1816条经验 获得超4个赞
ToList 将始终创建一个新列表,该列表不会反映对集合的任何后续更改。
但是,它会反映对象本身的变化(除非它们是可变的结构)。
换句话说,如果使用其他对象替换原始列表中的对象,ToList则仍将包含第一个对象。
但是,如果修改原始列表中的某个对象,ToList则仍将包含相同(已修改)的对象。
- 3 回答
- 0 关注
- 1146 浏览
添加回答
举报