101
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";
    }
}

foreach違反が true になるたびに、すぐにループから抜け出したいです。どうすればいいのですか?

4

5 に答える 5

227

を使用しbreakます。


あなたの質問とは関係ありませんが、あなたのコードに次の行があります。

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

この行では、ブール値を取ります(name.firstname == null)。次に、!演算子を適用します。次に、値が true の場合、Violated を false に設定します。それ以外の場合は true。基本的に、Violated は元の式と同じ値に設定されます(name.firstname == null)。次のように、それを使用しないでください:

Violated = (name.firstname == null);
于 2009-01-19T01:11:13.703 に答える
133

次のステートメントを使用してください。

break;
于 2009-01-19T01:12:08.287 に答える
39

breakキーワードを使用します。

于 2009-01-19T01:12:04.870 に答える
16

このコードを見てください。ループから抜け出すのに役立ちます。

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;
   }
}
于 2016-06-06T23:10:49.830 に答える
0

テスト中に、ブレーク後の foreach ループが、ループの外ではなく、ループの先頭に移動することがわかりました。したがって、この場合、 foreach を for と break に変更すると、正しく動作します。ブレーク後、プログラム フローはループから外れます。

于 2017-06-22T09:48:36.720 に答える