सूचकांक द्वारा सूची आइटम प्राप्त करना


321

मैंने हाल ही में जावा से c # मूविंग ओवर का उपयोग शुरू किया है। मैं यह नहीं जान सकता कि सूचकांक द्वारा सूची आइटम कैसे प्राप्त किया जाए। जावा में सूची का पहला आइटम प्राप्त करने के लिए यह होगा:

list1.get(0);

C # में समतुल्य क्या है?


4
देखें stackoverflow.com/questions/5326874/... है कि क्या करने के लिए के रूप में [] ऑपरेटर या ElementAt () विधि का उपयोग करने के कुछ चर्चा के लिए।
एनजीएम

जवाबों:


362
list1[0];

मान लें कि सूची के प्रकार में एक अनुक्रमणिका परिभाषित है।


5
एकमात्र उत्तर जो बताता है कि किसी सूची तक पहुंचना क्यों संभव है, जो एक वस्तु की तरह है, जैसे कि एक सरणी
प्रशांत

क्या यह सूची में वस्तु की एक प्रति लौटाता है? obj = सूची [0]; list.clear (); // obj अभी भी आबाद होगा?
पॉल मैकार्थी

1
@Paul मैकार्थी: आप आसानी से इस परीक्षण कर सकते हैं, लेकिन हाँ। एक सूची वस्तुओं का संदर्भ रखती है। सूची को साफ़ करने से इसमें रखी वस्तुओं पर कोई असर नहीं पड़ता है। यदि उन वस्तुओं का कोई अन्य संदर्भ नहीं है, तो वे कुछ समय में कचरा एकत्र कर लेंगे।
मिच गेहूं

241

आप सूची में ElementAt एक्सटेंशन विधि का उपयोग कर सकते हैं।

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

// Get the first item from the list

using System.Linq;

var myList = new List<string>{ "Yes", "No", "Maybe"};
var firstItem = myList.ElementAt(0);

// Do something with firstItem

24
बस ध्यान दें कि ElementAt () की आवश्यकता है using System.Linq;
एन जी एम

16
क्या मानक myList[0]अंकन से इसका कोई लाभ है?
एनालॉग वेपन

5
"मैं Enumerable.ElementAt () बनाम [] ऑपरेटर का उपयोग क्यों करूंगा?" stackoverflow.com/questions/5326874/…
लावंडे

3
.ElementAtOrDefault();
अमित झा

@AnalogWeapon हाँ वहाँ है - आप इसे एक अशक्त सुरक्षित श्रृंखला के भाग के रूप में उपयोग कर सकते हैं, जैसे myCollectionWhichMightBeNull?.ElementAt(0)या किसी गैर-मौजूद तत्व को फिर से सुरक्षित करने के लिए:myCollection.ElementAtOrDefault(0)?.SomeProperty
क्रिस मोर

27

Visual Basic, C #, और C ++ सभी में इसके नाम का उपयोग किए बिना आइटम प्रॉपर्टी तक पहुंचने के लिए सिंटैक्स है। इसके बजाय, सूची वाले चर का उपयोग किया जाता है जैसे कि यह एक सरणी था।

List[index]

उदाहरण के लिए देखें: https://msdn.microsoft.com/en-us/library/0ebtbkkc(v=vs.110).aspx


18

पुराना प्रश्न है, लेकिन मैं देख रहा हूं कि यह धागा हाल ही में सक्रिय था, इसलिए मैं आगे बढ़ूंगा और अपने दो सेंट में फेंक दूंगा:

वास्तव में मिच ने बहुत कुछ कहा। उचित अनुक्रमण को मानते हुए, आप बस आगे जा सकते हैं और वर्ग ब्रैकेट संकेतन का उपयोग कर सकते हैं जैसे कि आप किसी सरणी तक पहुँच रहे थे। संख्यात्मक सूचकांक का उपयोग करने के अलावा, हालांकि, यदि आपके सदस्यों के विशिष्ट नाम हैं, तो आप अक्सर टाइप करके एक साथ खोज / एक्सेस कर सकते हैं:

var temp = list1["DesiredMember"];

जितना अधिक आप जानते हैं, ठीक है?


0

.NET Listडेटा संरचना Arrayएक "म्यूटेबल शेल" में है।

तो आप इसे तत्वों तक पहुँच के लिए अनुक्रमित का उपयोग कर सकते हैं जैसे:

var firstElement = myList[0];
var secondElement = myList[1];

C # 8.0 से शुरू करके आप तत्वों को एक्सेस करने के लिए उपयोग कर सकते हैं Indexऔर Rangeकक्षाएं लगा सकते हैं । वे अनुक्रम के अंत से पहुँच प्रदान करते हैं या केवल अनुक्रम के एक विशिष्ट भाग तक पहुँचते हैं:

var lastElement = myList[^1]; // Using Index
var fiveElements = myList[2..7]; // Using Range, note that 7 is exclusive

आप अनुक्रमित और श्रेणियों को एक साथ जोड़ सकते हैं:

var elementsFromThirdToEnd = myList[2..^0]; // Index and Range together

इसके अलावा आप LINQ ElementAtपद्धति का उपयोग कर सकते हैं लेकिन 99% मामलों के लिए यह वास्तव में आवश्यक नहीं है और केवल धीमी गति से प्रदर्शन समाधान है।


0

आप सूची तत्वों तक पहुंचने के लिए इंडेक्स का उपयोग कर सकते हैं

List<string> list1 = new List<string>();
list1[0] //for getting the first element of the list
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.