将ListA赋值给ListB后,调用ListB.Remove会影响ListA吗?
关于C# List引用赋值后修改的问题解答
会的,调用secondList.Remove(someitem)后,allStuffs中的对应项也会被移除。
原因很直白:在C#里,List<T>属于引用类型,变量存储的不是列表的实际数据,而是指向内存中列表对象的地址。当你执行List<string> secondList = allStuffs;这行代码时,只是把allStuffs保存的地址复制给了secondList——换句话说,allStuffs和secondList现在指向的是同一个列表对象。
不管你通过哪个变量调用修改列表的方法(比如Remove、Add、Clear),本质都是在操作内存里的同一个对象,所以所有指向这个对象的变量都会同步看到变化。
举个实际代码例子:
List<string> allStuffs = new List<string> { "苹果", "香蕉", "橙子" }; List<string> secondList = allStuffs; secondList.Remove("香蕉"); // 此时allStuffs的内容是 ["苹果", "橙子"] // secondList的内容同样是 ["苹果", "橙子"]
内容的提问来源于stack exchange,提问作者DC37
相关产品推荐
相关产品推荐

