.NET एक सामान्य सूची कंटेनर प्रदान करता है, जिसका प्रदर्शन लगभग समान है (Arrays बनाम Lists प्रश्न का प्रदर्शन देखें)। हालांकि वे आरंभीकरण में काफी भिन्न हैं।
डिफ़ॉल्ट मान के साथ प्रारंभ करना बहुत आसान है, और परिभाषा के अनुसार उनके पास पहले से ही निश्चित आकार है:
string[] Ar = new string[10];
जो किसी को यादृच्छिक आइटम को सुरक्षित रूप से निर्दिष्ट करने की अनुमति देता है, कहते हैं:
Ar[5]="hello";
सूची के साथ चीजें अधिक मुश्किल हैं। मैं एक ही आरंभीकरण करने के दो तरीके देख सकता हूं, जिनमें से कोई भी आपको सुरुचिपूर्ण नहीं कहेगा:
List<string> L = new List<string>(10);
for (int i=0;i<10;i++) L.Add(null);
या
string[] Ar = new string[10];
List<string> L = new List<string>(Ar);
क्लीनर तरीका क्या होगा?
संपादित करें: उत्तर अब तक क्षमता को संदर्भित करते हैं, जो किसी सूची को पूर्व-आबाद करने की तुलना में कुछ और है। उदाहरण के लिए, केवल 10 की क्षमता के साथ बनाई गई सूची में, कोई ऐसा नहीं कर सकता हैL[2]="somevalue"
EDIT 2: लोगों को आश्चर्य है कि मैं इस तरह से सूचियों का उपयोग क्यों करना चाहता हूं, क्योंकि यह वह तरीका नहीं है जिसका उपयोग करने का इरादा है। मैं दो कारण देख सकता हूं:
लगभग पूरी तरह से तर्क है कि सूची "अगली पीढ़ी" सरणियाँ हैं, लगभग कोई जुर्माना के साथ लचीलापन जोड़ते हुए। इसलिए एक डिफ़ॉल्ट रूप से उनका उपयोग करना चाहिए। मैं इंगित कर रहा हूं कि वे शुरू में आसान नहीं हो सकते।
वर्तमान में मैं जो लिख रहा हूं वह एक आधार वर्ग है जो एक बड़े ढांचे के हिस्से के रूप में डिफ़ॉल्ट कार्यक्षमता प्रदान करता है। डिफ़ॉल्ट कार्यक्षमता में, मैं सूची का आकार उन्नत में जाना जाता है और इसलिए मैं एक सरणी का उपयोग कर सकता था। हालांकि, मैं किसी भी बेस क्लास को गतिशील रूप से इसे विस्तारित करने का मौका देना चाहता हूं और इसलिए मैं एक सूची का विकल्प चुनता हूं।
List
के लिए एक प्रतिस्थापन नहीं है Array
। वे अलग-अलग समस्याओं का समाधान करते हैं। यदि आप एक निश्चित आकार चाहते हैं, तो आप ए चाहते हैं Array
। यदि आप एक का उपयोग करते हैं List
, तो आप इसे गलत कर रहे हैं।