मैं सी # में एक फॉरेस्ट लूप से बाहर कैसे निकलूं?


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

जब भी उल्लंघन किया जाता है, तो मैं foreachतुरंत लूप से बाहर निकलना चाहता हूं । मैं यह कैसे करुं?

जवाबों:


208

का उपयोग करें break।


आपके प्रश्न से असंबंधित, मैं आपके कोड में देखता हूं पंक्ति:

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

इस पंक्ति में, आप बूलियन मान लेते हैं (name.firstname == null)। फिर, आप !ऑपरेटर को उस पर लागू करते हैं । फिर, यदि मान सत्य है, तो आपने उल्लंघन को गलत पर सेट किया है; अन्यथा सच है। तो मूल रूप से, वायलेटेड मूल अभिव्यक्ति के समान मूल्य पर सेट है (name.firstname == null)। क्यों न इसका उपयोग करें, जैसे कि:

Violated = (name.firstname == null);

मुझे ज़रूरत नहीं है कि परीक्षण और नकार को देखना पसंद नहीं है।
— जॉन ग्रैबॉसकास



9

इस कोड को देखें, यह आपको तेजी से बाहर निकलने में मदद कर सकता है!

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

परीक्षण के दौरान मैंने पाया कि ब्रेक के बाद फॉरेस्ट लूप लूप से जाता है, न कि लूप से। इसलिए मैंने फॉरच्यू को बदल दिया और इस मामले में ब्रेक सही ढंग से काम किया- ब्रेक प्रोग्राम के बाद लूप से बाहर चला जाता है।


MS डॉक्स का कहना breakहै कि और मेरे कोड में यह docs.microsoft.com/en-us/dotnet/csharp/language-reference/… के रूप में अच्छी तरह continueसे अगले पुनरावृत्ति पर जाता है।
— मिरो जे।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.