在C#(随意回答其他语言)循环中,break和continue之间的区别是什么,作为离开循环结构的手段,并进入下一次迭代?
例:
foreach (DataRow row in myTable.Rows)
{
if (someConditionEvalsToTrue)
{
break; //what's the difference between this and continue ?
//continue;
}
}
Run Code Online (Sandbox Code Playgroud) 我有四个foreach循环遍历集合并根据条件执行某些操作.
这是我现在写的代码:
boolean breakFlag = false;
String valueFromObj2 = null;
String valueFromObj4 = null;
for(Object1 object1: objects){
for(Object2 object2: object1){
// I get some value from object2
valueFromObj2 = object2.getSomeValue();
for(Object3 object3 : object2){
for(Object4 object4: object3){
// Finally I get some value from Object4.
valueFromObj4 = object4.getSomeValue();
// Compare with valueFromObj2 to decide either to break all the foreach loop
breakFlag = compareTwoVariable(valueFromObj2, valueFromObj4 );
if(breakFlag){break;}
} // fourth loop ends here
if(breakFlag){break;}
} // third loop ends here …Run Code Online (Sandbox Code Playgroud) 我遇到了处理原型方法消失(在本例中为 Array.prototype 方法)的问题,仅在 IE 中且仅当数组通过 SignalR 时。
我写了一个小/愚蠢但简单的概念验证网络应用程序来演示这个问题(代码如下)。请注意,当您单击“更新所有客户端”,然后单击“包含字母 'r' 的水果”时,_list 中的原型方法丢失导致异常。在那种情况下,数组来自 SignalR。现在,当您单击“重置”并将数组重置为硬编码值时,“包含字母 'r' 的水果”按钮突然起作用了 - 原型方法又回来了。请记住,此问题仅发生在 IE 中。
提示:当我第一次编写概念证明时,我无法重现该问题。当数组通过 SignalR 传入时,IE 仍然具有原型方法,但是在加载页面时我确实遇到了另一个错误。我不小心包含了两次 jQuery。当我取出多余的脚本以包含第二个 jQuery 时,它修复了该错误(显然),但现在可以重现该问题。然后 IE 缺少我创建的 Array 原型方法,但仅当数组通过 SignalR 出现时。
myExtensions.js:
Array.prototype.where = function (del)
{
var ret = new Array();
for (var i = 0; i < this.length; i++)
{
if (del(this[i])) ret.push(this[i]);
}
return ret;
}
Array.prototype.select = function (del)
{
var ret = new Array();
for (var i = 0; i < this.length; i++)
{
ret.push(del(this[i])); …Run Code Online (Sandbox Code Playgroud)