不相關的型別相等檢查
運算元 ('{0}') 的型別不是被匹配值 ('{1}') 的子型別或超型別。
右運算元 ('{0}') 的型別不是左運算元 ('{1}') 的子型別或超型別。
描述
#當比較兩個物件且這兩個物件的靜態型別都不是彼此的子型別時,分析器會產生此診斷。
這種比較通常會返回 false,可能無法反映程式設計師的意圖。
可能會出現誤報。例如,一個名為 Point 的類可能有兩個子類 CartesianPoint 和 PolarPoint,它們都不是彼此的子型別,但比較例項的相等性仍然可能是合適的。
一個具體的例子是,package:fixnum 包中的 Int64 和 Int32 類允許將例項與 int 進行比較,前提是 int 在右側。這種情況是此診斷明確允許的,但其他類似情況則不允許。
示例
#以下程式碼會產生此診斷,因為字串 s 正在與整數 1 進行比較
dart
bool f(String s) {
return s == 1;
}常見修復方法
#將其中一個運算元替換為與另一運算元相容的內容
dart
bool f(String s) {
return s.length == 1;
}