You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 09:55:24