一个类继承自 HashSet 以获取一组具有自定义EqualKeys(T x, T y)
检查的唯一对象,而不是IEqualityComparer
.
public class UniqueSet<T> : HashSet<T> where T : IKey
{
public new void Add(T item)
{
// .. check item for null, empty key etc.
if (base.Any(t => UniqueSet<T>.EqualKeys(t, item)))
{
throw new ArgumentException(..);
}
if (!base.Add(item)) throw new ArgumentException(..);
}
private static bool EqualKeys(T x, T y)
{
return ((IKey)x).Key.Equals(((IKey)y).Key, StringComparison.CurrentCultureIgnoreCase);
}
}
代码无法编译,因为我必须替换base.Any
为this.Any
.
恐怕我不明白这是为什么?