Dart列表出现异常结果如何解决?赋值后两列表同步变化问题
Dart列表赋值后修改一个另一个同步变化的原因及解决办法
在Dart里,List属于引用类型,不是int、bool这类值类型。当你执行list2 = list1时,并没有把list1里的元素复制一份生成新列表,而是让list2这个变量和list1指向内存里的同一个列表实例。
这就像两个人共用同一扇门的钥匙,不管谁开门进去改动房间里的东西,另一个人再开门看到的都是改动后的状态。所以你修改list1的元素,本质上是在操作那个共享的列表对象,list2作为同一个对象的引用,自然会显示相同的内容。
如果想让list2成为独立的列表,修改其中一个不影响另一个,需要创建原列表的副本,常用方法有几种:
- 使用
List.from()方法创建副本:list2 = List.from(list1); - 使用展开运算符(写法更简洁):
list2 = [...list1]; - 调用列表的
toList()方法(适用于已有列表生成新副本):list2 = list1.toList();
修改后的示例代码:
List list1 = []; List list2 = [...list1]; // 创建独立副本 list1.add(1); print(list1); // 输出 [1] print(list2); // 输出 []
内容的提问来源于stack exchange,提问作者Mohammed Hamdan
相关产品推荐
相关产品推荐

