Ошибка компиляции: «x» конфликтует с объявлением «y.x»? - PullRequest
2 голосов
/ 18 марта 2012

Я получаю эти ошибки:

'Map' конфликтует с объявлением 'COServer.Map'

Локальная переменная с именем «Карта» не может быть объявлена ​​в этой области, поскольку она придала бы другое значение значению «Карта», которое уже используется в «родительской или текущей» области для обозначения чего-то другого

Вот мой код:

* * 1010

Ответы [ 3 ]

4 голосов
/ 18 марта 2012

C # не позволяет использовать одно и то же «простое имя» двумя несовместимыми способами в перекрывающихся блоках, поскольку это приводит к запутанному коду, который не может быть легко понят или изменен. Вот упрощенная версия вашего кода, демонстрирующая проблему:

class Map
{
   public static int[] RevPoints = { };
}
class P
{
    void Main()
    {
        int[] maps = { };
        // Here the simple name Map means the type:
        foreach (int i in Map.RevPoints) {}
        // Here the simple name Map means the loop variable:
        foreach (int Map in maps) {}
    } 
}

Не делай этого; это очень запутанно. Читатель вашего кода должен разумно видеть идентификатор «Карта» и иметь то же значение во всем блоке, в котором он впервые используется.

Лучший выбор здесь - переименовать местное. Стандартная практика заключается в том, чтобы в любом случае называть местных жителей строчными буквами.

2 голосов
/ 18 марта 2012

Это конфликт имен между разными экземплярами того типа, который у вас есть в этом коде.Я предполагаю переменную в foreach утверждении.Просто переименуйте его, и все готово.

0 голосов
/ 18 марта 2012

То, что вы не видите в своем примере, это операторы использования в верхней части. То, что вы имеете, это конфликт пространства имен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...