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


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.