Цитата:
Сообщение от
Maxim Gorbunov
Иногда компилятор ругается без причины, например
Дело в том, что компилятор допускает одинаковые имена для типов и переменных.
Если переменная имеет точно такое же название, что и тип, то компилятор:
1. думает, что продолжается блок определения переменных,
2. встречает после имени типа недопустимую конструкцию
3. ругается.
Так, в приведенном выше примере, переменная называется object.
Но в системе есть тип object.
Поэтому компилятор "думает", что в первой строке идет определение переменной типа Object, встречает знак = вместо названия переменной и застывает в ступоре.
Точка с запятой дает понять компилятору, что блок определения переменных кончился. После точки с запятой компилятор ожидает lvalue и правильно разбирается с одинаковыми именами переменных и типов.