我正在使用版本 2.14.4 對 Dart 中的型別相等性進行一些測驗。我運行以下測驗:
test('Type test', () {
Type _detectType<T>() => T;
var nullableStringType = _detectType<String?>();
var doubleType = _detectType<double>();
expect(doubleType == nullableStringType, isFalse);
expect(doubleType.hashCode == nullableStringType.hashCode, isFalse);
});
我很驚訝地發現上次測驗失敗了。根據我的理解,兩個不同(即不相等)的物件應該具有不同的 hashCode。我應該認為這是一個錯誤還是存在我無法理解的隱藏邏輯?
uj5u.com熱心網友回復:
這不是錯誤。不要求不相等的物件具有不同的哈希碼,如hashCode.
允許不相等的物件具有相同的哈希碼。甚至在技術上允許所有實體具有相同的哈希碼,但如果沖突發生得太頻繁,則可能會降低基于哈希的資料結構(如 HashSet 或 HashMap)的效率。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/369075.html
