我已经实现了如下字典:
Dictionary<ErrorHashKey, ErrorRow> dictionary;
Run Code Online (Sandbox Code Playgroud)
我已经定义Equals()并GetHashCode()在ErrorHashKey课堂上.我目前正在为该项目编写一些文档,并从IEqualityComparer接口文档中获取:
Dictionary需要一个相等的实现来确定键是否相等.您可以使用接受comparer参数的构造函数指定IEqualityComparer泛型接口的实现.如果未指定实现,则使用默认的通用相等比较器EqualityComparer.Default.如果类型TKey实现System.IEquatable泛型接口,则默认的相等比较器使用该实现.
我没有做任何文件指定的事情(或者至少我不认为我是).我没有在构造函数参数中传递比较器,也没有创建EqualityComparer.Default比较器.
是否System.IEquatable<T> generic interface在每个类中自动实现了?我应该定义一个实现IEqualityComparer<T>吗?
如果未实现,默认比较器将调用object.Equals或object.GetHashCode(您的重写方法)IEquatable<T>.这在文档中有记录EqualityComparer<T>.Default.您不需要做任何额外的事情,IEquatable<T>也不会在您的班级中自动实施.
| 归档时间: |
|
| 查看次数: |
350 次 |
| 最近记录: |