Вы изменяете переменную управления циклом внутри тела вашего цикла, этого вам следует избегать, так как это приведет к неожиданному выполнению вашего цикла.
Пожалуйста, покажите пример строки, которую вы пытаетесьдля обработки, и я, возможно, смогу предложить лучшую реализацию вашего цикла for.
Вам нужно обработать всю строку сразу или вам нужно разбить ее на куски по 4 символа, обработайте эти 4, затемперейти к следующей строке?
Вы можете попробовать изменить способ обработки строки:
while ((line = sr.ReadLine()) != null)
{
string[] segments = line.Split(' ');
foreach(string segment in segments)
{
char[] arr = segment.ToCharArray();
north = CheckInput(arr[0]);
east = CheckInput(arr[1]);
west = CheckInput(arr[2]);
south = CheckInput(arr[3]);
grid[x, y] = new GridSquare(north, east, south, west);
}
Console.WriteLine(line);
y++;
}
Здесь я разделю строку на основе пробелов, после чего я могу работать с отдельным сегментом с помощьюразбиение на массив символов и доступ к определенным символам.
Этот код также предполагает, что в каждом сегменте всегда будет 4 символа, будет ли это всегда так?Вы также должны добавить проверку, чтобы убедиться, что строка соответствует ожидаемой.