C # में सूची खाली कैसे करें?


109

मैं एक सूची खाली करना चाहता हूं। उसको कैसे करे?


34
यहाँ प्रतिक्रिया समय अधिक तेज़ है क्योंकि यह MSDN
V4Vendetta

27
साथ ही जवाब अब MSDN की तुलना में यहाँ खोजना आसान है।
मैट कोनोली

14
इस तथ्य का उल्लेख नहीं करने के लिए कि यदि आप Google .net empty list, यह पृष्ठ MSDN से पहले आता है !
विवियन नदी

2
@ V4Vendetta 2018 में, मैं सुझाव दूंगा कि स्टैकऑवरफ्लो को संभवतः एक बॉट बनाना चाहिए, जो आपकी टिप्पणी को किसी भी धागे पर डाल दे, जिसमें टिप्पणियों में MSDN डॉक का लिंक है ...
scharette

जवाबों:


234

यह वास्तव में आसान है:

myList.Clear();

3
... अगर सूची वास्तव में एक है List<>, ArrayListया लागू करता IList। ;)
ल्यूकोरो

3
@ ल्यूकोरो को एक सूची के रूप में कहा जाता है यदि यह उन में से नहीं है?
श्रीनिवास रेड्डी थातीपर्थी

16
चूंकि यह Google में एक शीर्ष हिट है और मैं इस समस्या में भाग रहा हूं, इसलिए मैं यह टिप्पणी कर रहा हूं। यदि आप एक ही सूची को लूप में उपयोग करते हैं और स्पष्ट उपयोग करते हैं, तो सूची अक्सर पुरानी वस्तुओं के संदर्भ में रखेगी - मैं अक्सर = नया लिसटी <टी> () का उपयोग करके समाप्त होता हूं; इस तथ्य के कारण कि यह सभी पुराने आवंटन को तुरंत मंजूरी देता है। अधिकांश लोगों के लिए हालांकि, .Clear (); पर्याप्त होगा, लेकिन यदि आपको कोई सूची अजीब लग रही हो - तो = नई सूची <T> () का उपयोग करके देखें;
चार्ल्स

1
मैं इसे दोगुना करने जा रहा हूं क्योंकि 2020 तक यहां कुछ गलत जानकारी दी गई है। List<T>.Clearसभी संदर्भों को ठीक से साफ करता है, जो जीसी को आवश्यक होने पर एलोक को साफ करने की अनुमति देता है। new List<T>ऐसा नहीं करता है और प्रभावी रूप से सभी परिदृश्यों में अनुपयुक्त है
जॉन

28

यदि "सूची" से आपका तात्पर्य है List<T>, तो स्पष्ट विधि वह है जो आप चाहते हैं:

List<string> list = ...;
...
list.Clear();

आपको इन चीजों पर MSDN प्रलेखन खोजने की आदत डालनी चाहिए।

यहां बताया गया है कि उस प्रकार के विभिन्न बिट्स पर दस्तावेज़ों की खोज कैसे करें:

ये सभी Google प्रश्न लिंक की एक बंडल सूची देते हैं, लेकिन आम तौर पर आप ऐसा पहला चाहते हैं जो Google आपको प्रत्येक मामले में देता है।


"ये सभी लिंक के एक बंडल को सूचीबद्ध करते हैं, लेकिन आमतौर पर आप पहले वाले को चाहते हैं।" जब तक आप सूची खाली नहीं करना चाहते हैं?
बजे एक CVn

क्षमा करें, मुझे अधिक स्पष्ट होना चाहिए था। आप आमतौर पर पहला लिंक चाहते हैं जो Google आपको देता है, न कि "सूची वर्ग" को।
लास वी। कार्लसन

9

वैकल्पिक उत्तर देने के लिए (किसे 5 बराबर उत्तरों की आवश्यकता है?):

list.Add(5); 
// list contains at least one element now
list = new List<int>();
// list in "list" is empty now

ध्यान रखें कि पुरानी सूची के अन्य सभी संदर्भ साफ नहीं किए गए हैं (स्थिति के आधार पर, यह वही हो सकता है जो आप चाहते हैं)। इसके अलावा, प्रदर्शन के मामले में, यह आमतौर पर थोड़ा धीमा होता है।


क्या आप उस सेटिंग सूची को सत्यापित कर सकते हैं = नई सूची <> () सूची की तुलना में वास्तव में धीमी है। () ;? MSDN (नीचे लिंक) सूची के अनुसार। क्लियर (); एक ओ (एन) ऑपरेशन है, और मैं कल्पना नहीं कर सकता कि एक नई सूची को तत्काल इससे अधिक समय लगेगा। msdn.microsoft.com/en-us/library/dwb5h52a(v=vs.110).aspx
Chris Tramel

5
DotNetPerls ने एक बेंचमार्क किया और पाया कि नई सूची <> तेज है। dotnetperls.com/list-clear
गेरहार्ड पॉवेल

विस्तार से, यह भी ध्यान रखें कि listएक नया संदर्भ है। तो उस का उपयोग न करें यदि आप उस सूची पर ताला लगा रहे हैं।
जेरोमज

9

विकल्प # 1: खाली करने और इसे क्षमता बनाए रखने के लिए स्पष्ट () फ़ंक्शन का उपयोग करें List<T>

  • गणना 0 पर सेट है, और संग्रह के तत्वों से अन्य वस्तुओं के संदर्भ भी जारी किए जाते हैं।

  • क्षमता अपरिवर्तित रहती है।

विकल्प # 2 - आरंभिक स्थिति पर सेट करने के लिए क्लियर () और ट्रिमएक्सएक्स () फ़ंक्शन का उपयोग करें List<T>

  • गणना 0 पर सेट है, और संग्रह के तत्वों से अन्य वस्तुओं के संदर्भ भी जारी किए जाते हैं।

  • एक खाली ट्रिमिंग List<T>सूची की क्षमता को डिफ़ॉल्ट क्षमता पर सेट करती है।

परिभाषाएं

गणना = ऐसे तत्वों की संख्या जो वास्तव में हैंList<T>

क्षमता = तत्वों की कुल संख्या आंतरिक डेटा संरचना को आकार देने के बिना धारण कर सकती है।

स्पष्ट () केवल

List<string> dinosaurs = new List<string>();    
dinosaurs.Add("Compsognathus");
dinosaurs.Add("Amargasaurus");
dinosaurs.Add("Deinonychus");
Console.WriteLine("Count: {0}", dinosaurs.Count);
Console.WriteLine("Capacity: {0}", dinosaurs.Capacity);
dinosaurs.Clear();
Console.WriteLine("\nClear()");
Console.WriteLine("\nCount: {0}", dinosaurs.Count);
Console.WriteLine("Capacity: {0}", dinosaurs.Capacity);

क्लियर () और ट्रिम्सएक्स ()

List<string> dinosaurs = new List<string>();
dinosaurs.Add("Triceratops");
dinosaurs.Add("Stegosaurus");
Console.WriteLine("Count: {0}", dinosaurs.Count);
Console.WriteLine("Capacity: {0}", dinosaurs.Capacity);
dinosaurs.Clear();
dinosaurs.TrimExcess();
Console.WriteLine("\nClear() and TrimExcess()");
Console.WriteLine("\nCount: {0}", dinosaurs.Count);
Console.WriteLine("Capacity: {0}", dinosaurs.Capacity);


5

आप स्पष्ट विधि का उपयोग कर सकते हैं

List<string> test = new List<string>();
test.Clear();

4

आपको सूची पर स्पष्ट () फ़ंक्शन की आवश्यकता है, जैसे कि।

List<object> myList = new List<object>();

myList.Add(new object()); // Add something to the list

myList.Clear() // Our list is now empty
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.