Вызовы ЦИКЛОВ FOREACH и проблемы с печатью

#c# #foreach

#c# #foreach

Вопрос:

В следующем коде мне любопытно, почему последний цикл foreach выводит строку записи «Alert» три раза.Например, он напечатает сообщение 1, сообщение 2, сообщение 3, сообщение 1, сообщение 2, сообщение 3. Также он вызывает только последнее всплывающее окно. Pop — это всплывающее уведомление, которое отображает тип сообщения со стороны javascript..Отправляется ровно 3 сообщения, но уведомление отображается только с текстом последнего сообщения.

О, и «i» всегда выводит 0, оно никогда не увеличивается.

      NameValueCollection NV = new NameValueCollection();
        NV.Add("TOKEN", EncodeTo64(EncodeTo64(uid)));
        string[] values = null;
        string post = HttpPost("https:somewebsite.com", NV);
        foreach (string k in NV.Keys)
        {
            Console.WriteLine("ONE");
            values = NV.GetValues(k);
            foreach (string value in values)
            {
                Console.WriteLine("TWO");
                var mm = JsonConvert.DeserializeObject<List<Messages>>(DecodeFrom64(post));
                foreach (Messages m1 in mm)
                {
                    Console.WriteLine("THREEn");

                    Console.WriteLine("Alert->" i ": " m1.alert_message   " "  "Message: "  m1.notif_message);
                    string alert = m1.alert_message;
                    string type = m1.notif_message;
                    Pop(type, alert);

                }



            }

        }
  

Я вставил туда другие строки записи, чтобы посмотреть, сколько раз он будет печататься.

Комментарии:

1. Вы всегда устанавливаете i = 0.

2. Конечно, он никогда не увеличивается. Внутри цикла у вас есть int i = 0.

3. упс .. как я это пропустил

4. исправлена эта часть .. есть какие-либо подсказки о том, почему консоль. Строка записи («Alert->») … печатается дважды?

5. Ну, у вас есть три встроенных для каждого цикла. Предупреждение 1 Предупреждение 2 Предупреждение 3 Предупреждение 1 предупреждение 2 Предупреждение 3 имеет смысл, если, например, в массиве значений есть две строки, особенно если ничто внутри этого цикла не заставит mm генерировать разные сообщения для второй строки в массиве значений.

Ответ №1:

ваш i объявлен внутри foreach. он не будет увеличиваться, потому что вы каждый раз устанавливаете его обратно в 0. поместите его перед foreach.