Ошибка компилятора CS0135
Обновлен: Ноябрь 2007
Сообщение об ошибке
Объявление 'declaration1' конфликтует с объявлением 'declaration2'
'declaration1' conflicts with the declaration 'declaration2'
Компилятор не позволяет скрывать имена, что обычно приводит к логическим ошибкам в коде.
Пример
Следующий пример приводит к генерированию ошибки CS0135.
// CS0135.cs
public class MyClass2
{
public static int i = 0;
public static void Main()
{
{
int i = 4;
i++;
}
i = 0; // CS0135
}
}
Из Спецификация языка C#, раздел 7.5.2.1:
Для каждого вхождения данного идентификатора в качестве простого имени в выражении или в деклараторе, в пространстве объявлений локальной переменной (§CNDJ6nn5us4RjIIAqgBLqQsCAAAACAAAAA4AAABfAFIAZQBmADQANgAxADYAMgAyADEAMwA4AAAA REF _Ref461622138 \r \h 3.3), непосредственно включающем это вхождение, каждое следующее вхождение того же идентификатора в качестве простого имени в выражении или в деклараторе должно ссылать на ту же сущность. Это правило позволяет гарантировать, что внутри определенного блока, блока switch, а также операторов for, foreach и using имя всегда имеет одинаковое значение.