Dart重载!=运算符报错:是否需重载及相关限制咨询
Dart中!=运算符重载的常见问题解答
1. 究竟是否应该重载!=运算符?
不需要。Dart的Object类已经默认实现了!=运算符,它的逻辑是直接对==的结果取反。只要你正确重载了==运算符,!=会自动沿用你定义的相等判断逻辑反向运算,完全没必要手动重载。
2. 如果可以重载,该运算符的重载有哪些限制?
Dart不支持用户自定义重载!=运算符,这是语言层面的硬性限制。官方规定只有特定运算符允许被重载,!=不在此列,所以你尝试重载时才会报错。
你的代码报错正是因为尝试重载了不允许自定义的!=,删掉这个重载方法即可。修正后的代码如下:
class CustomObject { int big; int small; CustomObject(this.big, this.small); @override bool operator ==(Object other) { if (other is CustomObject) { return big == other.big && small == other.small; } return false; } @override int get hashCode => big.hashCode ^ small.hashCode; }
内容的提问来源于stack exchange,提问作者Yukinosuke Takada
相关产品推荐
相关产品推荐

