Как стать автором
Обновить

Комментарии 10

Это все что у вас есть на Lucene.Net?
Есть ещё пара замечаний. Но на статью найденное не тянет. Зато встретилась эта интересная редкая ошибка и решили про это рассказать.
Об остальных предупреждениях, на которые стоит посмотреть, я записал им в баг трекер.
А зачем вообще нужен унарный плюс, кроме как для единообразия? Это же бесполезный оператор.
Чтобы в Python, где нет операции инкремента, всё равно можно было писать ++a!
В Lua, кстати, унарного плюса нет.
Зато его можно перегрузить.

На самом деле, унарный плюс втянут в C++ из C (ради совместимости), а уж оттуда и в C#.
Пара важных свойств есть (по-крайней мере для C++, но не знаю, передрали ли эту семантику в C#):

1) он делает из беззнакового целого знаковое, при этом расширяя тип:
например, если у вас "unsigned short i = 5", то "+i" имеет тип "int"
2) выражение "+i" нельзя использовать в качестве lvalue
Интересное св-во, не знал, достаточно красиво получается вместо static_cast(), если писать на плюсах.
п.с. парсер съедает кавычки у статик каста(
Лучше не использовать для приведения типа. Неочевидно, если встретится в коде. Эта фича досталась из аналогии с унарным минусом.
Класс, спасибо за разъяснение! Может спасти от гневных ругательств на компилятор (в редком случае)!
Зарегистрируйтесь на Хабре, чтобы оставить комментарий