首页 > 解决方案 > Dart 函数的返回对象不相等

问题描述

我是 Flutter 和 Dart 语言的新手。有人可以向我解释为什么 geek1==geek2 在原则上应该为真时是假的。函数 gfg() 每次都返回相同的值,那么为什么 geek1 和 geek2 不相等?

gfg() => [1, 2];     
// Main function
void main() {
  // Assiging value
  // through function
  var geek1 = gfg();
  var geek2 = gfg();
   
  // Printing result
  // false
  print(geek1 == geek2);
  print(geek1);
  print(geek2);
}

标签: flutterdartconstantsequality

解决方案


Dart 中的对象相等性通过引用进行评估 - 基本上,您正在创建两个不同的对象,它们存储在两个不同的内存地址。当 Dart 运行时比较对象时,它会比较它们的内存地址,而不是默认情况下它们的内容。

要比较两个List对象的内容,可以使用listEquals函数。

一些额外的信息:

要比较类的相等性,您可以覆盖相等运算符,也可以使用Equatable包。


推荐阅读