Как Вы определяете, равны ли два HashSets (значением, не ссылкой)?

Этот вопрос представляет собой немного часто задаваемых вопросов, поэтому я публикую это как wiki (так как раньше я писал аналогично, но это более старый); в любом случае ...

Какую версию .NET вы используете? Если вы используете .NET 3.5, то у меня есть реализация общих операторов в MiscUtil (бесплатно и т. Д.).

У этого есть методы, такие как T Add(T x, T y) , и другие варианты арифметики для разных типов (например, DateTime + TimeSpan).

Кроме того, это работает для всех встроенных, снятых и сделанных на заказ операторов и кэширует делегат для выполнения.

Некоторые дополнительные сведения о том, почему это сложно, это здесь .

Вы также можете знать, что метод dynamic (4.0) также разрешает эту проблему косвенно, т. Е.

dynamic x = ..., y = ...
dynamic result = x + y; // does what you expect

50
задан Joel Coehoorn 9 June 2009 в 19:34
поделиться