Dart 按引用传递或按值传递

问题描述 投票:0回答:1

我正在开发一个 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 pass-by-reference pass-by-value
1个回答
0
投票

在 Dart 中,“一切都是对象”,因此“传递”始终是“按引用传递”。话虽这么说,我们没有传递到这里,只是引用同一个对象的各种变量。

让我添加图片...

© www.soinside.com 2019 - 2024. All rights reserved.