почему C # не позволяет перегрузить оператор? - PullRequest
0 голосов
/ 01 марта 2010

Почему в C # запрещена перегрузка операторов, а в C ++?

Я получил эту ошибку при попытке перегрузки.

Ожидается перегрузка двоичного оператора

Мой пример кода выглядит так:

public static MyClass operator +=(MyClass obj1, MyClass obj2)
        {
           ...
        }

Ответы [ 5 ]

14 голосов
/ 01 марта 2010

Вы можете перегрузить операторы в C #:

Прежде чем вы решите использовать перегрузку оператора, прочитайте, по крайней мере, следующее:


РЕДАКТИРОВАТЬ в ответ на редактирование оп:

+= - оператор без перегрузки. Однако он разрешается до +, а + перегружается. посмотрите здесь , какие операторы вы можете и не можете перегрузить.

Операторы, которые могут быть перегружены:

+, -, !, ~, ++, --, true, false

+, -, *, /, %, &, |, ^, <<, >>

==, !=, <, >, <=, >= (операторы сравнения могут быть перегружены, но см. Примечание в ссылке)

5 голосов
/ 01 марта 2010

Перегрузка оператора, C # позволяет. (Версия Yoda)

4 голосов
/ 01 марта 2010

Допускается перегрузка оператора.

Тем не менее,

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

2 голосов
/ 01 марта 2010

c # допускает перегрузку оператора. Руководство MSDN здесь .

0 голосов
/ 01 марта 2010

Вы можете перегрузить операторы в C #. Учебник по перегрузке операторов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...