2011-06-28 9 views
71

यदि तत्वों में से कोई एक आवश्यकता को पूरा करता है तो मैं foreach लूप से सी # में कैसे टूट सकता हूं?मैं सी # में फ़ोरैच लूप से कैसे कूदूं?

उदाहरण के लिए:

foreach(string s in sList){ 
     if(s.equals("ok")){ 
     //jump foreach loop and return true 
    } 
    //no item equals to "ok" then return false 
} 
+0

मजेदार। पायथन में आप बस 'वापसी' ठीक करेंगे 'sList में:' - क्या सी # में कुछ तुलनीय नहीं है? –

+8

@ टिम पिट्ज़कर: बेशक, स्पेंडर का जवाब देखें। वास्तव में, लिंकक में उपयोग करने के बाद, बहुत जरूरी कोड गुफा चित्रों की तरह दिखता है। – R0MANARMY

उत्तर

131
foreach (string s in sList) 
{ 
    if (s.equals("ok")) 
     return true; 
} 

return false; 

वैकल्पिक रूप से, आप आइटम मिल गया है के बाद अगर आप कुछ अन्य काम करने होंगे:

bool found = false; 
foreach (string s in sList) 
{ 
    if (s.equals("ok")) 
    { 
     found = true; 
     break; // get out of the loop 
    } 
} 

// do stuff 

return found; 
+6

मैं सुझाव दूंगा कि दूसरा उदाहरण बेहतर होगा 'bool found = callFunctionInFirstCodeSnipper (सूची); // do stuff' – ICR

60

उपयोग break; और इस foreach बाहर निकल जाएगा लूप

21
foreach (var item in listOfItems) { 
    if (condition_is_met) 
    // Any processing you may need to complete here... 
    break; // return true; also works if you're looking to 
      // completely exit this function. 
} 

चाल चलाना चाहिए। ब्रेक स्टेटमेंट सिर्फ लूप के निष्पादन को समाप्त कर देगा, जबकि रिटर्न स्टेटमेंट स्पष्ट रूप से पूरे फ़ंक्शन को समाप्त कर देगा। आपके प्रश्न से निर्णय लेना आप वापसी का सच उपयोग करना चाह सकते हैं; बयान।

7

आप break जो सबसे करीब संलग्नित लूप से बाहर कूदता उपयोग कर सकते हैं, या आप कर सकते हैं बस सीधे return true

47

आप LINQ मार्ग लेने के द्वारा स्पष्ट छोरों से बच सकते हैं:

sList.Any(s => s.Equals("ok")) 
+21

या बस 'युक्त ("ठीक है") का उपयोग करें। –

+6

@ ग्राहम क्लार्क: 'इसमें शामिल हैं' मानते हैं कि आप 'आईसीओलेक्शन ' पर पुनरावृत्त कर रहे हैं।'कोई भी' किसी भी चीज़ पर काम करेगा जो 'IENumerable ' टाइप करता है, और इस मामले में प्रश्न स्पष्ट रूप से इंगित नहीं करता कि यह किस तरह का संग्रह चालू हो रहा है (हालांकि 'सूची' एक सुंदर निष्पक्ष अनुमान है)। – R0MANARMY

1
foreach(string s in sList) 
{ 
    if(s.equals("ok")) 
    { 
      return true; 
    } 
} 
return false; 
-2
var ind=0; 
foreach(string s in sList){ 
    if(s.equals("ok")){ 
     return true; 
    } 
    ind++; 
} 
if (ind==sList.length){ 
    return false; 
} 
+0

बहुत यकीन है कि '$' वैध सी # वाक्यविन्यास मान्य नहीं है। – R0MANARMY

+0

शायद नहीं, जावास्क्रिप्ट/php guy im। लेकिन एक समाधान समाधान लागू करने के लिए यहां पर्याप्त कोड है ... मैंने $ और जोड़ा var हटा दिया .. शायद अभी भी सी + –

+0

वास्तव में 'var' एक बिल्कुल मान्य सी # कीवर्ड नहीं है, तो आप अच्छे हैं – R0MANARMY

1

या तो सीधे लूप से बाहर लौटें:

foreach(string s in sList){ 
    if(s.equals("ok")){ 
     return true; 
    } 
} 

// if you haven't returned by now, no items are "ok" 
return false; 

या का उपयोग break:

bool isOk = false; 
foreach(string s in sList){ 
    if(s.equals("ok")){ 
     isOk = true; 
     break; // jump out of the loop 
    } 
} 

if(isOk) 
{ 
    // do something 
} 

हालांकि, अपने मामले में यह बेहतर हो सकता है इस तरह कुछ करने के लिए: यह आपके सवाल का सीधा जवाब नहीं है

if(sList.Contains("ok")) 
{ 
    // at least one element is "ok" 
} 
else 
{ 
    // no elements are "ok" 
} 
0

लेकिन वहाँ एक बहुत आसान आप जो चाहते हैं उसे करने का तरीका। यदि आप कम से कम .NET 3.5 या बाद में उपयोग कर रहे हैं। यह Enumerable.Contains

bool found = sList.Contains("ok"); 
3

कहा जाता है के बारे में कैसे:

return(sList.Contains("ok")); 

अगर आप सभी क्या करना चाहते हैं एक "ठीक है" के लिए चेक है कि चाल करना चाहिए और जवाब लौट ...

4

'ब्रेक' कथन का प्रयोग करें। मुझे यह विनोदी लगता है कि आपके प्रश्न का उत्तर सचमुच आपके प्रश्न में है! वैसे, एक साधारण Google खोज आपको जवाब दे सकती थी।

संबंधित मुद्दे