Вы можете скрыть более широкие области видимости во многих случаях (но не так широко, как вы можете в некоторых других языках стиля C), и, конечно, может иметь поле и параметр с тем же именем (или поле и локальное).
С одной стороны, если мы не позволим области видимости скрывать более широкую область, часто используемые слова вскоре будут запрещены из-за более широкой области видимости.
Для другого мы можем ввести что-тов более широком масштабе вниз по линии, и даже из другой сборки.Скажем, у вас не было int Test;
выше.Теперь представьте, чем это является в классе, производном от другого, и в этом кто-то добавляет public int Test;
.Что должно быть сделано, чтобы справиться с этим.
Конечно, хорошей идеей является избегать таких конфликтов имен, и могут помочь соглашения (строчные буквы для локальных, строчные буквы для не приватных членовподчеркивание начала для частного использования имеет то преимущество, что вы жалуетесь на подчеркивание, не совместимое с CLR, если вы временно сделаете приватного участника публичным в эксперименте и забудете его отменить), но прямой его запрет будет невозможен.