Dart:为什么创建的实例不同,但它们访问的变量不同?

Dart:为什么创建的实例不同,但它们访问的变量不同?,dart,Dart,正如您所看到的animal1和animal2是两个不同的实例,但是为什么animal1.age和animal2.age是相同的呢?Dart不创建这些变量的单独副本吗 class Animal { int age = 10; Animal(); Animal.named(); } void main() { var animal1 = Animal(); var animal2 = Animal.named(); print("${identical(animal

正如您所看到的
animal1
animal2
是两个不同的实例,但是为什么
animal1.age
animal2.age
是相同的呢?Dart不创建这些变量的单独副本吗

class Animal {
  int age = 10;

  Animal();

  Animal.named();

}

void main() {
  var animal1 = Animal();
  var animal2 = Animal.named();

  print("${identical(animal1, animal2)}"); // prints false
  print("${identical(animal1.age, animal2.age)}"); // prints true

}

如果Dart整数相等,则认为它们相同。整数
10
没有两个不同的版本,因此当您询问
相同(animal1.age,animal2.age)
时,实际上只是检查它们的整数年龄是否相同


变量是不同的,它们恰好持有相同的(相等和相同的)值,这就是您要检查的。

再次感谢Irn,但我在Dart的某个地方读到了所有东西都是对象,所以我认为
相同(animal1.age,animal2.age)
并不意味着我们正在检查
animal1.age==animal2.age1
。所有值都是对象。变量不是对象,因此您不会检查它是否是相同的
age
变量,只检查它是否是存储在两个
age
变量中的相同值。值
10
是一个对象。恰好只有一个值为10的整数对象,所以它是存储在两个
age
变量中的同一个对象。谢谢你,这是有意义的。