2010-12-02 21 views
7

मेरे पास सी # नौसिखिया प्रश्न है। नीचे दिए गए दोनों में भी अच्छा अभ्यास क्या है? ... और सरणी की तुलना में धीमी या तेज सूची है?सूची सरणी का उपयोग करना - सर्वोत्तम अभ्यास

 //Method 1 
     int[] i_array = { 2, 0, 110, 53455, 2223 }; 

     if (someBolean) 
     { 
      Array.Resize(ref i_array, i_array.Length + 1); 
      i_array[i_array.Length - 1] = someIntValue; 
     } 

     //Method 2 
     var i_list = new List<int>(); 
     i_list.AddRange(new int[] { 2, 0, 110, 53455, 2223 }); 

     if (someBolean) 
      i_list.Add(someIntValue); 
+1

यदि आप लगातार सरणी का आकार बदलते हैं, तो विधि 2 में भी सूची का उपयोग कर सकते हैं। –

+0

मुझे पता है कि यह करना मुश्किल है लेकिन यह चरण सीखने की अवस्था पर है, प्रदर्शन के बारे में चिंता न करें * जब तक प्रदर्शन एक मुद्दा नहीं है *। Http://stackoverflow.com/questions/211414/is-premature-optimization-really-the-root-of-all-evil –

उत्तर

5

बाद में परिवर्तनीय आकार संग्रह के लिए सबसे अच्छा अभ्यास माना जाता है।

आप किस प्रकार के संग्रह का उपयोग कर रहे हैं, इस पर निर्भर करते हुए, फ्रेमवर्क क्लास आपके पहले उदाहरण में जो कुछ भी कर रही है उसके समान आंतरिक रूप से कुछ करेगी (एक तत्व द्वारा आकार बदलने के बजाय, यह एक बड़े आकार में वृद्धि करता है ताकि आप तत्व जोड़ने के लिए अतिरिक्त बफर स्पेस है)।

सामान्य रूप से, हालांकि, आप पहिया को फिर से आविष्कार नहीं करना चाहते हैं। ढांचा संग्रह वर्गों का एक टन प्रदान करता है जो चर आकार के होते हैं। अपना खुद का लिखने के बजाय उनका इस्तेमाल करें।

+0

धन्यवाद के लिए यह प्रश्न देखें। मुझे संदेह था कि यह एक बड़े आकार से बढ़ेगा। मैं सूचियों का उपयोग करूंगा। – GuruMeditation

3

एक सूची आंतरिक रूप से एक सरणी का उपयोग करती है, इसलिए मुझे उम्मीद है कि इन दोनों के प्रदर्शन समान होंगे।

कच्चे सरणी की तुलना में सूचियों के साथ प्रोग्रामिंग करते समय त्रुटियों को बनाना बहुत मुश्किल है, इसलिए मैं ज्यादातर समय सूचियों को पसंद करता हूं।

11

सूचियों का उपयोग करें जब आपको ऐसे संग्रह की आवश्यकता होती है जो बढ़ या सिकुड़ सके।

यदि आप लंबाई जानते हैं और इसे बदलना नहीं चाहते हैं तो सरणी का उपयोग करें।


आप collection initializers का उपयोग एक सूची प्रारंभ करने में कर सकते हैं, तो आप एक सरणी आरंभ करने के लिए इसी तरह के वाक्य रचना मिलती है:

var list = new List<int> { 2, 0, 110, 53455, 2223 }; 

if (someBoolean) 
{ 
    list.Add(someIntValue); 
} 
+0

धन्यवाद। पता नहीं था कि आप उन्हें इस तरह शुरू कर सकते हैं। – GuruMeditation

0

दोनों, IEnumerables के रूप में हवा ताकि आप दोनों पर समान कार्रवाई कर सकते हैं। सूची का लाभ जस्टिन निसनेर ने कहा, परिवर्तनीय आकार संग्रह। साथ ही, किसी सरणी का आकार बदलने के लिए फ्रेमवर्क को स्मृति को पुन: आवंटित करने की आवश्यकता होगी, जबकि सूची एक लिंक्ड सूची के रूप में व्यवहार करती है, केवल संग्रह से तत्व जोड़ या निकालती है।

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