Перегрузка оператора до и после приращения C # как? - PullRequest
1 голос
/ 05 апреля 2011

Существует разница между h = ++i и h = i++ в C #.Так что мне нужен способ объявить различные перегруженные операторы для преинкремента (т.е. ++ i) и постинкремента (i ++) в C #.Как мне это сделать, пожалуйста?

Мне известно о том, что оба оператора делают то же самое со значением, над которым они работают - проблема в том моменте времени, когда назначение выполнено.Я знаю, как сделать это в C ++, но это не вопрос.Мне интересно, есть ли способ перегрузить оба способа, которыми этот оператор может вести себя в C #, и если да, то как это сделать.

Ответы [ 2 ]

3 голосов
/ 05 апреля 2011

Вы не можете http://msdn.microsoft.com/en-us/library/36x43w8w(v=vs.71).aspx. Вы можете только перегружать ++, единственная разница в том, когда будет вызываться ваша перегрузка.

Редактировать: Кроме того, вы можете перегружать ++ только дляопределенные типы, так что в основном это просто псевдоним для функции по вашему выбору.

2 голосов
/ 05 апреля 2011

Нет разницы в объявлении этих операторов. Фактически, они действуют точно так же, единственная разница - возвращаемое значение. Перегрузка оператора ++ работает для обоих, другое возвращаемое значение предоставляется средой выполнения, а не кодом пользователя.

Редактировать: нашел его В чем разница между i ++ и ++ i?

...