flutter - 为什么列表是绑定(bind)的?

标签 flutter dart

请有人能解释一下为什么当我更改第一个列表时第二个更改?

List t = [2,5,4,7];
List b = t;
b.sort((a,b)=>a-b);
print(t);
print(b);

安慰:
[2、4、5、7]
[2、4、5、7]

最佳答案

Dart 从不克隆对象实例。这适用于列表,也适用于所有对象:

class Foo {
  int a;
}

void main() {
  final first = Foo();
  first.a = 42;
  final second = first;
  second.a = 21;

  print(first); // 21
  print(second); // 21
}

如果您不想这样做并创建一个列表的副本,请使用 List.from... :

final list = [0, 1, 2];
final clone = [...list];

list.add(42);
print(clone); // (0, 1, 2);
print(list); // (0, 1, 2, 42);

关于flutter - 为什么列表是绑定(bind)的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59928279/

相关文章:

git - 在 Android Studio 中,从 Git 克隆 flutter 项目时, "run"按钮被禁用/变灰

json - Flutter 创建 API 请求并接收字符串 - 'Ä' 'Ö' 'Ü' 'ß'

firebase - Firestore交易致命异常

dart - 在 flutter/dart 中重用小部件

closures - 为什么 dart 在引用方法时创建闭包?

dart - 类型 'Future<String>' 不是类型 'String' 的子类型

flutter - 为什么flutter会向我显示这个错误,我该如何解决?

android - 断言失败 : line 6075 pos 12: 'child == _child' : is not true

android - socket.io 无法工作,我的 flutter 应用程序未连接到服务器或后端部分

firebase - 如何使用StreamBuilder?