Подкласс HashSet, чтобы он всегда использовал определенный IEqualityComparer при использовании в другом наборе.

Я хочу создать подкласс HashSet<Point>, чтобы он использовал HashSet<Point>.CreateSetComparer() как IEqualityComparer всякий раз, когда я использую его внутри другого набора.

В основном каждый раз, когда я делаю это:

var myDict = new Dictionary<MySubclassOfHashSet, Char>();

Я хочу, чтобы он автоматически рассматривался как:

var myDict = new Dictionary<HashSet<Point>, Char>(HashSet<Point>.CreateSetComparer());

В соответствии с этим вопросом.

В настоящее время я сделал это вручную следующим образом:

class MySubclassOfHashSet: HashSet<Point> {
    public override bool Equals(object obj) {
      //...
    }
    public override int GetHashCode() {
      //...
    }
}

Но как-то некрасиво. Есть ли более простой способ, который мне не хватает?


person Flash    schedule 13.01.2013    source источник


Ответы (1)


person    schedule
comment
Разве вы не должны также реализовать public override bool Equals(object obj)? И добавляйте раздражающе любые параметризованные конструкторы из HashSet<T> - person NetMage; 20.10.2018