Parallel.For循环的相同的值

问题描述:

我试图做一个简单的parallel.For和它似乎一遍又一遍地得到相同的“我”。
我的代码是:Parallel.For循环的相同的值

String[] str = new String[10000]; 

Parallel.For(0,10000, i=> 

{ 

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

    str[i] = "ok"; 

else 

    str[i] = "SameValue"; 

}); 

我希望它永远不会为“其他”

+0

我看到两个问题与此代码。这是丑陋的罪过。你的'If'语句也总是返回false。除非Parallel.For增加“i”的值,这可能解释其不变的原因。你的问题是混淆不完全确定你的意思是“同一个我一遍又一遍” – 2012-03-15 16:09:40

string.Empty不等于null,你如果条件改变

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

+0

谢谢,菜鸟错误:) – Vini 2012-03-19 15:41:56

我希望它永远不会为“其他”

不正确的 - 字符串数组元素使用null(它们的默认值作为参考类型)进行初始化 - 而不是string.Empty。因此只有else部分被执行。

您可以通过在if语句中设置一个断点来轻松验证它。