J S*_*ith 3 c# dictionary hashtable sortedlist sorteddictionary
如果目标是创建一个保留插入顺序的通用只读字典,那么SortedList <,>或SortedDictionary <,>是否可以与IComparer <>一起使用,它试图通过执行类似下面的操作来维护插入顺序?
class OrderedComparer<T> : IComparer<M>
{
public int Compare(M x, M y)
{
return x.Equals(y) ? 0 : -1;//or 1
}
}
SortedList<M> orderedList = new SortedList<M>(new OrderedComparer<T>());
Run Code Online (Sandbox Code Playgroud)
(有趣的是,在SortedDictionary的情况下,上述方法需要返回0或1以防止元素按反向插入顺序排序).
比较者必须遵守法律
Compare(a, b) == -Compare(b, a) //assuming only possible values are -1, 0, 1
Run Code Online (Sandbox Code Playgroud)
这是对称属性.您的示例代码不遵守它.因此BCL系列根本不给您任何保证.您违反了记录的合同.
你不能这样做.
相反,您可以将新字段添加到M存储插入订单的位置int.然后,您可以在比较器中使用该字段.
| 归档时间: |
|
| 查看次数: |
199 次 |
| 最近记录: |