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";
});
我希望它永远不会为“其他”
答
string.Empty
不等于null
,你如果条件改变
if (String.IsNullOrEmpty(str[i]))
+0
谢谢,菜鸟错误:) – Vini 2012-03-19 15:41:56
答
我希望它永远不会为“其他”
不正确的 - 字符串数组元素使用null
(它们的默认值作为参考类型)进行初始化 - 而不是string.Empty
。因此只有else
部分被执行。
您可以通过在if
语句中设置一个断点来轻松验证它。
我看到两个问题与此代码。这是丑陋的罪过。你的'If'语句也总是返回false。除非Parallel.For增加“i”的值,这可能解释其不变的原因。你的问题是混淆不完全确定你的意思是“同一个我一遍又一遍” – 2012-03-15 16:09:40