Flutter,Bloc.运算符==和常量有什么区别?

8xiog9wr  于 2023-03-13  发布在  Flutter
关注(0)|答案(2)|浏览(121)

当您可以将const添加到构造函数中时,为什么要在比较过程中将operator==或一些helper包添加到状态/事件中呢?

abstract class PersonBase {
  const PersonBase();
}

class Person extends PersonBase {
  const Person({required this.name});

  final String name;
}
abstract class PersonBase {}

class Person extends PersonBase {
  Person({required this.name});

  final String name;

  @override
  bool operator ==(Object other) {
    if (identical(this, other)) return true;
  
    return other is Person &&
      other.name == name;
  }

  @override
  int get hashCode => name.hashCode;
}
djmepvbi

djmepvbi1#

const关键字的实际用途是作为一个指示符,告诉编译器,对于这个变量,它在代码的生命周期中永远不会改变,所以只创建它的一个副本,只要提到它,就引用回你已经创建的副本,不要创建新的副本。
Dart重用与const相同的变量引用,如果已经以相同的方式引用过的话。这和java中的Literal Pool类似。

enxuqcxy

enxuqcxy2#

简单地说,const关键字用于指定Person类是不可变的,并且可以在编译时构造,operator==方法用于在您提供的代码示例中比较Person示例是否相等。

相关问题