Почему нельзя перегрузить операторы внутри статического класса? - PullRequest
8 голосов
/ 11 февраля 2010

У меня есть класс расширения для System.Net.IPAddress, и я хотел перегрузить двоичные операторы >, <, ==, но компилятор говорит мне, что я не могу перегрузить эти операторы внутри статического класса, который я должен другие мои методы расширения. Есть ли для этого особая причина?

Спасибо.

1 Ответ

13 голосов
/ 11 февраля 2010

Операторы должны относиться к экземплярам типа, в котором они объявлены. Поскольку вы не можете иметь экземпляры статического класса, нет смысла определять операторы.

В .NET нет «операторов расширения».

Для ваших целей рассмотрите возможность реализации IComparer<T> (охватывает < и >) и / или IEqualityComparer<T> (охватывает ==, или вы можете просто использовать сравнение, возвращающее 0; это зависит от того, считаете ли вы "сорта равными" и "равными" как одно и то же).

...