在Dart中使用重载==运算符检查是否为null?

时间:2019-07-12 13:08:32

标签: dart null operator-overloading equals

我在Dart中超载了== operator,并想用它来明确检查null,有什么方法可以实现吗?

据我了解,会发生什么事,即使重载equals运算符,Dart也会隐式检查null。它确定thing不是null而是Overridden的实例,因此thing == null返回false

我知道这是非常理想的行为,因为如果尚未启动对象,则无法调用重载函数,但是有没有办法创建静态运算符重载或其他实现null的方式明确检查?

class Overridden {
  final dynamic _value;

  Overridden({value}) : _value = value;

  @override
  bool operator ==(other) => _value == other.value;

  dynamic get value => _value;
}

void main() {
  Overridden thing = Overridden();

  // Prints null as expected
  print(thing.value);
  // Prints false, which is unexpected
  print(thing == null);
}

我希望能够直接使用==运算符自己进行空值确定,而无需使用吸气剂或检查Overridden()

0 个答案:

没有答案