насколько тяжёл клинический случай C#.
В Smalltalk 1+2*3 будет 9. Насколько тяжел его случай? Все зависит от того, насколько ты понял концепцию языка.
С# не является расширением
С++. Поэтому они легко могут отличаться в поведении. В
С++ чаще используется оператор-метод объекта с одним аргументом и предполагается что будет передаваться ссылка. Поэтому операторы над примитивами заточили так (это моя версия). В
С# типичный оператор (насколько я знаю) - статический метод класса с двумя агрументами по значению.
Можно сделать и так и так:
Number (0);
number = *(++number) + *(++number); // 3 или 4?
если
Number operator+(Number n){...}
получится 3, если же
Number operator+(Number& n) const {...}
то будет 4.
А вообще за ++i+++i нужно выгонять нафиг и сиплюсплюсера и сишарпера.