百科问答小站 logo
百科问答小站 font logo



.Net 为什么不为 Dictionary 提供 IEqualityComparer 的默认实现? 第1页

  

user avatar   Ivony 网友的相关建议: 
      

没看懂你在说什么。

1、IEqualityComparer<T>有默认实现:

EqualityComparer(T).Default 属性 (System.Collections.Generic)

2、Dictionary<>对象可以直接获取当前的IEqualityComparer<T>:

Dictionary(TKey, TValue).Comparer 属性 (System.Collections.Generic)

3、如果你的问题是,Dictionary<>对象为什么不默认实现IEqualityComparer<T>,那么答案是做不到。因为两个Dictionary<>对象所适用的用于标识Key的唯一性的IEqualityComparer<T>可能是不一样的。也就是同样两个Dictionary<string, object>,如果他们的Comparer属性不一样,那么理论上这两个字典是不可比较的。

4、如果你只是要比较两个Dictionary的所有KeyValuePair集合是不是相等,直接new HashSet<KeyValuePair<K,V>>( dictionary )来比较就可以了。




  

相关话题

  为什么叫.NET?它和C#是什么关系? 
  c#中虽然异步和多线程是两码事,但是是否异步微软提供的async函数内部还是多线程去实现的? 
  ajax发送json数据到后台时,数据中包含html代码的文本,会出现Connection Error如何解决? 
  Objective-C 的一些函数名为什么都这么长? 
  如何看待以下网页对C#的评论? 
  为什么很多人都说使用微软技术的公司是小公司?是不是微软的技术入门简单? 
  如果 C# 当年设计成一个彻底编译到机器码的但有运行时的 AOT 语言,能不能真的拿来代替 C++? 
  我的一位老师说,Java 适用于大型软件而 C# 适用中小型软件。这是真的么? 
  .Net core 自旋锁 vs Lock statement/Monitor 的开销在哪? 
  c#中虽然异步和多线程是两码事,但是是否异步微软提供的async函数内部还是多线程去实现的? 

前一个讨论
有没有人能将知乎上的技术大牛都组织起来,做一个开源项目?比如实现一个CoreOS这样的东东
下一个讨论
为什么知乎输完账号密码点击登录之后才弹出验证码输入框?





© 2025-06-27 - tinynew.org. All Rights Reserved.
© 2025-06-27 - tinynew.org. 保留所有权利