EADever Ответов: 3

Почему код внутри foreach не запускается?


У меня есть проблема с foreach. Код внутри foreach не запускается, я помещаю туда консольную линию записи, и она не появляется.

List<string> targetStatus = properties.GetTargetStatus(); //This give not null value


foreach (string status in targetStatus)
            {
                Console.WriteLine("Hello boss!"); //This message doesn't show up
            }


После запуска консольного приложения мой код внутри foreach не отображается. кто-то может объяснить или дать решения для меня?

Что я уже пробовал:

Все, что я пытаюсь сделать выше....... И я не знаю почему : (, если список targetStatus count = 0, то foreach будет работать?

3 Ответов

Рейтинг:
4

#realJSOP

targetStatus может быть, это и не null, но это не обязательно означает, что в коллекции есть какие-то предметы.


Рейтинг:
28

OriginalGriff

Самая очевидная причина заключается в том, что в коллекции нет предметов.
Используйте отладчик: поставьте точку останова на линию

foreach (string status in targetStatus)
И запустите свой код в отладчике. Когда он достигнет линии, он остановится и передаст управление вам. Затем вы можете изучить содержимое переменных, одноступенчатые строки и т. д.
Если это пустая коллекция, то вам решать, почему: поставьте на линию еще один брейкпойн
List<string> targetStatus = properties.GetTargetStatus();
И снова запустите свой код в отладчике. На этот раз, когда он достигнет линии, шагните в метод и внимательно следите за тем, что там происходит.


F. Xaver

5ed

Рейтинг:
14

CPallini

Цитата:
если List of targetStatus count = 0, то foreach будет запущен?
Нет, конечно. Вы не можете перечислить пустое множество. Какова была бы ценность status?


F. Xaver

5ed

CPallini

Спасибо.

EADever

`собственности.GetTargetStatus (); ' get List & lt;string> value from [XmlAttribute("")]