Подтвердить что ты не робот

Перегрузка и приоритет оператора

В С# вы можете перегружать операторы, например. + и *. В своей математической интерпретации эти операторы имеют четко определенный порядок приоритета.

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

4b9b3361

Ответ 1

Если вы перегружаете оператор, он всегда будет иметь приоритет над реализацией по умолчанию. Однако вы не можете изменить приоритет самого оператора, поэтому он будет сохранен по умолчанию. Дополнительная информация о MSDN.

Релевантные кавычки:

Пользовательские реализации операторов всегда имеют приоритет над предопределенные реализации оператора: только когда не применимо пользовательские реализации операторов существуют предопределенные операторы.

и

Пользовательские объявления операторов не могут изменять синтаксис, приоритет или ассоциативность оператора. Например,/ оператор всегда является двоичным оператором, всегда имеет уровень приоритета указанный в Раздел 7.2.1 и всегда лево-ассоциативный.

Ответ 2

Перегрузка не меняет приоритет.

Приоритет оператора задается компилятором и не может быть изменен, по крайней мере, без настройки компилятора.