Dart:为什么创建的实例不相同,但是实例访问的变量却是呢?

时间:2019-10-14 06:20:55

标签: dart

您可以看到animal1animal2是两个不同的实例,但是为什么animal1.ageanimal2.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

}

1 个答案:

答案 0 :(得分:0)

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

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