2009-12-17 16 views

回答

6

目前尚不清楚哪種類型你呼籲反正IndexOf,但大多數的收藏不會使用IComparable反正 - 他們就用Equals並做線性搜索。除非您重寫了Equals(或實現IEquatable<T>),否則將通過引用標識比較類,並且結構將自動生成相等比較。 IComparable將用於像排序列表的二進制搜索。

2

MSDN的列表(T).IndexOf方法:

此方法確定平等使用 默認的相等比較 EqualityComparer(T)爲.DEFAULT T, 值的列表中的類型。

1

比較使用EqualityComparer<T>.Default完成。

EqualityComparer<T>.Default將返回一個默認的實現,如果存在的話...否則它使用基於Object.Equals()的實現,我猜是你的情況正在使用什麼。

除非您已覆蓋Equals()或已實施IEquatable<T>,否則Object.Equals()將僅檢查參考平等。

相關問題