Параллельно. Для зацикливания на одном значении - PullRequest
0 голосов
/ 15 марта 2012

Я пытаюсь провести простую параллель. И, похоже, снова и снова получаю одно и то же «я».
Мой код:

String[] str = new String[10000];

Parallel.For(0,10000, i=>

{

if(str[i] == string.Empty)

   str[i] = "ok";

else

   str[i] = "SameValue";

});

Я бы ожидалникогда не добираться до "еще"

Ответы [ 2 ]

3 голосов
/ 15 марта 2012

string.Empty не равно null, измените условие if на

if (String.IsNullOrEmpty(str[i]))

2 голосов
/ 15 марта 2012

Я ожидал бы, что он никогда не достигнет "else"

Неверно - элементы массива строк инициализируются с null (их значение по умолчанию в качестве ссылочного типа) - не string.Empty.Следовательно, только часть else всегда выполняется.

Вы можете легко проверить это самостоятельно, установив точку останова в операторе if.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...