Здравствуйте, VladD2, Вы писали:
VD>Проблемы от "=" есть только в С и С++ авторы которых были не соль дальновидны, чтобы предвидеть тот факт, что люди будут опечатываться в операторе if и писать вместо "==" "=".
И компиляторы тут же выдают при этом warning, который обычно приравнивается к error. Так что не вижу здесь проблемы, равно как и осуждаю практику в виде:
if (2 == x) ;
VD>1. Введением более строкой типизации. Так сделано в C#. В нем никакое выражение отличное от булева не может приводиться к bool, а if всгда проверяет только булевы выражения. При этом проблемы все же возможны если оператор присвоения использовать для булевых переменных, но это не встречается на практике, так как сравнение с булевыми константами редко бывает осмысленно.
А вот это, честно говоря, достаточно сильно напрягает. Почему бы не ввести соглашения о приведении базовых типов к bool? Меня напрягает писать очевидные вещи типа
Object o = null;
if (o <> null) ;
Гораздо быстрее и без потери понятности (при наличии соглашений) можно писать
if (o) ;
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>