Làm cách nào để thoát khỏi vòng lặp foreach trong C #?


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

Bất cứ khi nào vi phạm là đúng, tôi muốn thoát ra khỏi foreachvòng lặp ngay lập tức. Tôi phải làm nó như thế nào?

Câu trả lời:


208

Sử dụng break.


Không liên quan đến câu hỏi của bạn, tôi thấy trong mã của bạn dòng:

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

Trong dòng này, bạn nhận một giá trị boolean (name.firstname == null). Sau đó, bạn áp dụng !toán tử cho nó. Sau đó, nếu giá trị là true, bạn đặt Violated thành false; ngược lại thành true. Vì vậy, về cơ bản, Violated được đặt thành cùng giá trị với biểu thức gốc (name.firstname == null). Tại sao không sử dụng nó, như trong:

Violated = (name.firstname == null);

Tôi không muốn thấy những thử nghiệm và phủ định không cần thiết.
John Grabauskas



9

Hãy xem đoạn mã này, nó có thể giúp bạn thoát khỏi vòng lặp nhanh chóng!

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

0

Trong quá trình thử nghiệm, tôi thấy rằng vòng lặp foreach sau khi ngắt đi đến vòng lặp và không ra khỏi vòng lặp. Vì vậy, tôi đã thay đổi foreach thành for và break trong trường hợp này hoạt động chính xác - sau khi dòng chương trình break ra khỏi vòng lặp.


Các tài liệu MS nói rằng đã breakhết và trong mã của tôi, nó cũng như vậy docs.microsoft.com/en-us/dotnet/csharp/language-reference/… continue chuyển đến lần lặp tiếp theo.
Miro J.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.