Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何退出C#中的foreach循环?_C#_Foreach - Fatal编程技术网

如何退出C#中的foreach循环?

如何退出C#中的foreach循环?,c#,foreach,C#,Foreach,只要违例为true,我就想立即退出foreach循环。怎么做?使用 与你的问题无关,我在你的代码中看到: foreach (var name in parent.names) { if name.lastname == null) { Violated = true; this.message = "lastname reqd"; } if (!Violated) { Violated = !(name.

只要违例为true,我就想立即退出
foreach
循环。怎么做?

使用


与你的问题无关,我在你的代码中看到:

foreach (var name in parent.names)
{
    if name.lastname == null)
    {
        Violated = true;
        this.message = "lastname reqd";
    }

    if (!Violated)
    {
        Violated = !(name.firstname == null) ? false : true;
        if (ruleViolated)
            this.message = "firstname reqd";
    }
}
在这一行中,您获取一个布尔值
(name.firstname==null)
。然后,应用
操作员到它。然后,如果该值为true,则将违抗设置为false;否则就是真的。因此,基本上,违例设置为与原始表达式
(name.firstname==null)
相同的值。为什么不使用它,例如:

Violated = !(name.firstname == null) ? false : true;

使用关键字。

只需使用以下语句:

Violated = (name.firstname == null);

看看这段代码,它可以帮助您快速脱离循环

break;

在测试期间,我发现foreach循环在中断后进入循环beging,而不是退出循环。因此,我将foreach改为for和break,在这种情况下,正确工作-中断后程序流退出循环。

我不希望看到不必要的测试和否定。MS文档说,
break
退出,在我的代码中,
continue
进入下一个迭代。
foreach (var name in parent.names)
{
   if (name.lastname == null)
   {
      Violated = true;
      this.message = "lastname reqd";
      break;
   }
   else if (name.firstname == null)
   {
      Violated = true;
      this.message = "firstname reqd";
      break;
   }
}