unrelated_type_equality_checks
对不相关类型的引用调用相等运算符 ==
。
详情
#不要 比较不相关类型的引用是否相等。
比较类型引用时,如果两者都不是对方的子类型,则很可能返回 false
,并且可能无法反映程序员的意图。
来自 package:fixnum
的 Int64
和 Int32
允许与 int
进行比较,前提是 int
在右侧。此 Lint 规则允许这种情况作为特例。
错误示例
dart
void someFunction() {
var x = '1';
if (x == 1) print('someFunction'); // LINT
}
错误示例
dart
void someFunction1() {
String x = '1';
if (x == 1) print('someFunction1'); // LINT
}
错误示例
dart
void someFunction13(DerivedClass2 instance) {
var other = DerivedClass3();
if (other == instance) print('someFunction13'); // LINT
}
class ClassBase {}
class DerivedClass1 extends ClassBase {}
abstract class Mixin {}
class DerivedClass2 extends ClassBase with Mixin {}
class DerivedClass3 extends ClassBase implements Mixin {}
正确示例
dart
void someFunction2() {
var x = '1';
var y = '2';
if (x == y) print(someFunction2); // OK
}
正确示例
dart
void someFunction3() {
for (var i = 0; i < 10; i++) {
if (i == 0) print(someFunction3); // OK
}
}
正确示例
dart
void someFunction4() {
var x = '1';
if (x == null) print(someFunction4); // OK
}
正确示例
dart
void someFunction7() {
List someList;
if (someList.length == 0) print('someFunction7'); // OK
}
正确示例
dart
void someFunction8(ClassBase instance) {
DerivedClass1 other;
if (other == instance) print('someFunction8'); // OK
}
正确示例
dart
void someFunction10(unknown) {
var what = unknown - 1;
for (var index = 0; index < unknown; index++) {
if (what == index) print('someFunction10'); // OK
}
}
正确示例
dart
void someFunction11(Mixin instance) {
var other = DerivedClass2();
if (other == instance) print('someFunction11'); // OK
if (other != instance) print('!someFunction11'); // OK
}
class ClassBase {}
abstract class Mixin {}
class DerivedClass2 extends ClassBase with Mixin {}
启用
#要启用 unrelated_type_equality_checks
规则,请在您的 analysis_options.yaml
文件中的 linter > rules 下添加 unrelated_type_equality_checks
analysis_options.yaml
yaml
linter:
rules:
- unrelated_type_equality_checks
如果您改为使用 YAML 映射语法来配置 Linter 规则,请在 linter > rules 下添加 unrelated_type_equality_checks: true
analysis_options.yaml
yaml
linter:
rules:
unrelated_type_equality_checks: true
除非另有说明,否则本网站上的文档反映了 Dart 3.7.1 版本。页面上次更新于 2025-03-07。 查看源代码 或 报告问题。