सूची में मौजूद तत्व [x] की जाँच करें


91

अगर मेरे पास तार की सूची है

List<String> list = new list<String>();
list.add("str1");
list.add("str2");
list.add("str3");

और मैं जानना चाहता हूं कि उदाहरण के लिए सूचकांक स्थिति 2 में एक तत्व है, क्या सूची की लंबाई को गिनने या ट्रायल कैच का उपयोग किए बिना ऐसा करने का एक सरल तरीका है?

के रूप में यह विफल हो जाएगा, मैं इसे एक कोशिश पकड़ के साथ गोल कर सकते हैं, लेकिन यह अत्यधिक लगता है

if(list.ElementAt(2) != null)
{
   // logic
}

जवाबों:


224
if(list.ElementAtOrDefault(2) != null)
{
   // logic
}

ElementAtOrDefault () System.Linqनेमस्पेस का हिस्सा है ।

हालाँकि आपके पास एक सूची है, इसलिए आप इसका उपयोग कर सकते हैं list.Count > 2


4
नियमित रूप से पढ़ने के लिए तेज़। चेक की जाँच करें, लेकिन कृपया ध्यान दें कि "शून्य" आइटम की सूची के अंदर सैद्धांतिक रूप से मान्य हैं, इसलिए यदि परीक्षण संतुष्ट नहीं है तो अपवाद को फेंकने के लिए इस पर भरोसा न करें।
AFract

1
आप का उपयोग कर सकते हैं ?? ऑपरेटर यानी। list.ElementAtOrDefault(2)??defaultvalue
बजे जॉर्ज कार्गाकिस

12
if (list.Count > desiredIndex && list[desiredIndex] != null)
{
    // logic
}

5
भले ही list.Count> वांछितIndex संतुष्ट हो, तत्व को पुनः प्राप्त करना एक अपवाद फेंक देगा यदि इंडेक्स <0
AFract

2
ठीक है, नाइटपैकिंग। वांछित संख्या शायद सकारात्मक संख्या होगी। अगर यह विश्वसनीय दावा नहीं है, तो बस वांछित जोड़ें> -1 ..
विषय

1
@SubjectX - नाइटपैकिंग नहीं। एक इंडेक्स का उपयोग करना आम है, IndexOfजिसके द्वारा -1 हो सकता है
काइल डेलाने

0
int? here = (list.ElementAtOrDefault(2) != 0 ? list[2]:(int?) null);

2
कोड-केवल उत्तर हतोत्साहित किए जाते हैं क्योंकि वे यह नहीं समझाते हैं कि वे मुद्दे को कैसे हल करते हैं। कृपया यह बताने के लिए अपने उत्तर को अपडेट करें कि यह दूसरे स्वीकृत और उत्क्रमित उत्तर पर कैसे सुधार करता है। साथ ही, यह प्रश्न 7 साल पुराना है, आपके प्रयासों को उन उपयोगकर्ताओं द्वारा अधिक सराहा जाएगा जिनके हाल के अनुत्तरित प्रश्न हैं। कृपया समीक्षा करें कि मैं एक अच्छा उत्तर कैसे लिखूं
फ्लफीकेटन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.