Поделиться через


Ошибка компилятора 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 имя всегда имеет одинаковое значение.