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) {}
}
}
Не делай этого; это очень запутанно. Читатель вашего кода должен разумно видеть идентификатор «Карта» и иметь то же значение во всем блоке, в котором он впервые используется.
Лучший выбор здесь - переименовать местное. Стандартная практика заключается в том, чтобы в любом случае называть местных жителей строчными буквами.