C# new List<T>(IEnumerable<T> collection),链表初始化时传入已存在链表

cs 复制代码
 
public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}
cs 复制代码
List<Person> persons = new List<Person>
 {
     new Person { Name = "张三", Age = 25 },
     new Person { Name = "李四", Age = 30 },
     new Person { Name = "王五", Age = 28 }
 };

 var copy = new List<Person>(persons);

问 copy 的各个元素和原链表persons 的各个元素指向的对象内存地址是一样的吗?

答:是的

证明:

默认的 Remove 方法是基于引用比较的

我们对 persons 链表使用 Remove 方法删除 copy链表的最后一个元素:

发现persons里面的最后一个元素被删除了;

或者给copy里面的元素赋值,发现persons的元素也会受影响。

此外通过以下方法创建的链表,和 var copy = new List<Person>(persons)是同样的效果:

cs 复制代码
var copy = new List<Person>();
copy.AddRange(persons);
//或者
var copy = persons.Where(s=>s.Age >10).ToList();

元素指定的内存地址是一致的;

相关推荐
吃一碗粉只付一碗钱8 小时前
16-SqlSugar多库ConfigId与按实体选连接
sqlserver·c#
视觉小萌新9 小时前
AI Class 3 · Chapter 1:变量、字符串、list/dict、if/for(python学习-小白版-有经验可跳过)
python·学习·list
rockey62710 小时前
AScript之字符串模板
c#·.net·script·expression·动态脚本
will_net11 小时前
Redis集群部署+Redis 链接地址放入Aollo +c#项目接入Redis
redis·c#·bootstrap
BuHuaX18 小时前
Lua 与 ToLua:运行机制及热更新原理
开发语言·unity·junit·c#·lua
asdzx6718 小时前
C# 操作 PDF 元数据:从属性写入到字段提取的完整流程
前端·pdf·c#
氷凌公子20 小时前
算法与UI拆分中遇到的问题及解决方式
c#·onnx·yolov26
1-1=021 小时前
C# 泛型
c#·.net·.netcore
starzy199021 小时前
Scala List操作:不可变链表的函数式美学
链表·list·scala