2010-06-16 33 views
0

我正在查看System.Collections.Specialized.NameValueCollection,它需要IEqualityComparer,如果像我這樣的人想按照按鍵的字母順序排序集合中的項目,這是個好消息。NameValueCollection實際上沒有對IEqualityComparer做任何事情?

但是,仔細看Reflector,我沒有看到NVC類實際上使用IEqualityComparer任何地方。我的觀察是否正確?在中,我沒有看到IEqualityComparer在可枚舉的實體中的使用,除了按照某個基本順序重新排列其組成項目以外。我沒有看到NVC上的方法,看起來它可能想要做某種類型的東西(Sort,Arrange,OrderBy,Aggregate等)。

回答

1

NameValueCollection在內部使用Hashtable來存儲這些值。 Hashtable使用IEqualityComparer散列和比較鍵的相等性。

還要注意的是IEqualityComparer沒有做任何的排序,它只是比較平等(顧名思義),所以如果你想排序值/鍵是沒有用的。