C # Как использовать значение переменной из цикла вне цикла - PullRequest
0 голосов
/ 12 мая 2018

Я пытаюсь вычислить контрольную сумму NMEA на основе строки, чтобы я мог сравнить ее с заданной контрольной суммой и объявить, содержит ли строка ошибку или нет.Вот способ, которым я пытаюсь это сделать (данный индекс 0 является просто примером для одной строки)

        List<string> richTextBoxLines = richTextBox1.Lines.ToList();
        richTextBoxLines.RemoveAll(x => !x.Contains("GPGGA"));

        richTextBox1.Lines = richTextBoxLines.ToArray();
        NOLbox.Text = richTextBox1.Lines.Count().ToString();

        int finalCheckSum = 0;
        string sumOfBytes = richTextBox1.Lines[0].Split('*').First().Substring(1);
        for (int i = 0; i == sumOfBytes.Length; i++)
            { 
            finalCheckSum ^= Convert.ToByte(sumOfBytes[i]);
            }
        checksumValue.Text = finalCheckSum.ToString();

Первая часть удаляет сообщения, отличные от GGA, а остальная часть имеетрассчитать контрольную сумму.Дело в том, что мне понадобится значение переменной FinalCheckSum вне цикла, и пока оно возвращает 0 - потому что, конечно, оно объявлено как 0, хотя объявлять его внутри цикла бессмысленно.Учитывая это, как я могу получить значение переменной вне цикла, чтобы я мог использовать его позже?

1 Ответ

0 голосов
/ 12 мая 2018

Общее решение для этого - переместить переменную, которая вам нужна, на 1 уровень выше в области видимости, пока она не станет доступна там, где вам это нужно. В вашем случае, я вижу, вы уже сделали это, ваша переменная объявлена ​​перед циклом for. Ошибка должна быть в состоянии остановки цикла. Я думаю, что вы хотели написать что-то вроде:

for (int i = 0; i <= sumOfBytes.Length; i++)
...