我正在开发一个 Dart 项目,发现 Dart 的值分配令人困惑。在此之前,我在google上做了一些研究,它告诉我Dart的值分配是按值传递而不是按引用传递。所以,我做了一个简单的原型来测试,不同数据类型的结果有很大不同,这里有人可以帮忙解释一下吗?
原型代码:
var num1 = 12;
var num2 = 24;
var num3 = num1;
print('before: $num3');
num1 = 99;
print('after: ${num3}');
print('');
List<Person> A1 = [Person('Lucas', 12), Person('Amanda', 12), Person('Zespri', 12)];
List<Person> A2 = A1;
for (var S in A2) {print('before: ${S.name}');}
print('');
A1[1].name = 'Bob';
for (var S in A2) {print('after: ${S.name}');}
结果:
before: 12
after: 12
before: Lucas
before: Amanda
before: Zespri
after: Lucas
after: Bob
after: Zespri
在 Dart 中,“一切都是对象”,因此“传递”始终是“按引用传递”。话虽这么说,我们没有传递到这里,只是引用同一个对象的各种变量。
让我添加图片...