我想子类化HashSet<Point>
以便它使用HashSet<Point>.CreateSetComparer()
as an IEqualityComparer
每当我在另一组中使用它时。
基本上每次我都会这样做:
var myDict = new Dictionary<MySubclassOfHashSet, Char>();
我希望它自动被视为:
var myDict = new Dictionary<HashSet<Point>, Char>(HashSet<Point>.CreateSetComparer());
As per 这个问题 https://stackoverflow.com/questions/5910137/how-do-i-use-hashsett-as-a-dictionary-key.
我目前已手动完成此操作,如下所示:
class MySubclassOfHashSet: HashSet<Point> {
public override bool Equals(object obj) {
//...
}
public override int GetHashCode() {
//...
}
}
但它有点丑陋。我缺少更简单的方法吗?
var myDict = new Dictionary<MySubclassOfHashSet<Point>, Char>();
public sealed class MySubclassOfHashSet<T> : HashSet<T>, IEquatable<MySubclassOfHashSet<T>>
{
public override int GetHashCode()
{
return Unique.GetHashCode(this);
}
public bool Equals(MySubclassOfHashSet<T> other)
{
return Unique.Equals(this, other);
}
private static readonly IEqualityComparer<HashSet<T>> Unique = HashSet<T>.CreateSetComparer();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)