我不懂颤音和飞镖语。请有人向我解释一下为什么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);
}发布于 2021-08-18 21:16:48
在Dart中,对象相等是通过引用来计算的--基本上,您正在创建两个不同的对象,它们存储在两个不同的内存地址中。当Dart运行时比较对象时,它会比较它们的内存地址,而不是默认情况下它们的内容。
要比较两个List对象的内容,可以使用listEquals函数。
一些额外的信息:
若要比较类是否相等,请使用可以重写相等运算符。或使用赤道包。
发布于 2021-08-18 21:14:37
因为gfg是一个函数,它在每次调用时都返回一个新数组。
您正在将它们与==进行比较,后者是用于进行身份比较的操作符,而不是值比较(即。平等)。由于实例总是不同的,所以它们从来都不是相同的。
https://stackoverflow.com/questions/68839355
复制相似问题