Этот вопрос представляет собой немного часто задаваемых вопросов, поэтому я публикую это как wiki (так как раньше я писал аналогично, но это более старый); в любом случае ...
Какую версию .NET вы используете? Если вы используете .NET 3.5, то у меня есть реализация общих операторов в MiscUtil (бесплатно и т. Д.).
У этого есть методы, такие как T Add
, и другие варианты арифметики для разных типов (например, DateTime + TimeSpan
).
Кроме того, это работает для всех встроенных, снятых и сделанных на заказ операторов и кэширует делегат для выполнения.
Некоторые дополнительные сведения о том, почему это сложно, это здесь .
Вы также можете знать, что метод dynamic
(4.0) также разрешает эту проблему косвенно, т. Е.
dynamic x = ..., y = ...
dynamic result = x + y; // does what you expect
Посмотрите на метод SetEquals.
my_hashset.SetEquals(other);