2010-09-11 12 views
28

प्रत्येक स्थिति के लिए जो सरणी के उपयोग की गारंटी देता है ... लाभ के साथ एक अद्भुत संग्रह है। क्या .NET में अब Arrays के लिए कोई विशिष्ट उपयोग केस है?.NET में Arrays ने अपना महत्व खो दिया है?

+0

मुझे गति दिखाई देगी लेकिन मुझे यकीन नहीं है। –

+8

ग्रेट उत्तर, * क्रिस टी *। अच्छा काम जारी रखें –

उत्तर

34

एक विशिष्ट लंबाई के साथ डेटा भेजना/प्राप्त करना दिमाग में आता है, यानी। सीरियल पोर्ट, वेब अनुरोध, एफ़टीपी अनुरोध। मूल रूप से सामान जो सिस्टम में निचले स्तर पर काम करता है। साथ ही, अधिकांश संग्रह भंडारण के लिए एक सरणी का उपयोग कर रहे हैं (ध्यान देने योग्य अपवाद: LinkedList<T>)। संग्रह सिर्फ एक और अमूर्त परत हैं।

+0

टीसीपी/आईपी सॉकेट भी दिमाग में आता है, लेकिन इन्हें स्ट्रीम द्वारा अधिक सुंदर ढंग से संभाला जा सकता है। –

+2

स्ट्रीम में 'बाइट [] 'भी शामिल है। – Femaref

+0

मैं कहूंगा * लगभग * कोई संग्रह भंडारण के लिए एक सरणी का उपयोग करता है। उदाहरण के लिए, 'लिंक्डलिस्ट ' नहीं। –

2

हां? जब भी मेरे पास एक प्रकार होता है जो आंतरिक रूप से वस्तुओं के एक निश्चित आकार के संग्रह को बनाए रखता है, तो मैं एक सरणी का उपयोग करता हूं क्योंकि यह पुनरावृत्त करने के लिए सबसे तेज़ है और कम से कम स्मृति की आवश्यकता है। यदि आपको उन सुविधाओं की आवश्यकता नहीं है, तो List<T>, Queue<T> आदि का उपयोग करके कोई समझ नहीं है।

5

हां, निश्चित रूप से अभी भी सरणी के लिए उपयोग है। कुछ तरीकों को अभी भी सरणी की आवश्यकता है।

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

string[] items = "a,b;c:d".Split(new char[]{',',';',':'}); 

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

6

Arrays उपयोगी हैं क्योंकि वे हमेशा स्मृति में रैखिक होते हैं और साथ काम करने के लिए तेज़ होते हैं। उदाहरण के लिए, मैं byte[] और सीधे किसी भी समस्या के बिना संरचना में मार्शल ले सकता हूं लेकिन List<T> को पहले तक एक सरणी में परिवर्तित करना होगा।

1

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

5

नहीं उनके पास अभी भी उनके उपयोग हैं और हमेशा विचार किया जाना चाहिए।

याद रखें कि सरणी एक निश्चित लंबाई के बहुत ही बुनियादी प्रतिनिधित्व हैं इसलिए वे बहुत तेज हैं और अधिकांश भाषाएं सरणी में उपयोग किए गए प्रकार के आधार पर उन्हें समझती हैं।

आपको उस समय के रूप में एक सरणी आकार को परिभाषित करने की आवश्यकता है और बाद में इसका आकार बदल नहीं सकता है। सूची और अन्य चीजें आवश्यकतानुसार बढ़ सकती हैं जो स्मृति आवंटन के संबंध में ओवरहेड जोड़ती है।

सूचियां और अन्य प्रकार उपयोगी हैं क्योंकि वे बहुत कुछ कर सकते हैं लेकिन कभी-कभी आपको उस अतिरिक्त ओवरहेड की आवश्यकता नहीं होती है, इसलिए आपको एक सरणी की आवश्यकता होती है।

यह 4x4 चला रहा है क्योंकि आपको लगता है कि एक दिन आपको सड़क पर जाने की आवश्यकता हो सकती है, भले ही 99.9% मौका सामान्य सड़कों पर होगा। ऐरे मूल कार होगी और उदाहरण के लिए एक सूची 4x4 होगी ... यह सब कुछ करता है जो एक कार कर सकती है (हुड के नीचे एक ही हिस्से का उपयोग कर सकता है) लेकिन गैस, लागत की कीमत पर, शायद नहीं प्रदर्शन और संगतता की लागत से कुछ पार्किंग स्टालों, आदि में फिट ...

सरणी = प्रदर्शन और संगतता

सूचियाँ (या अन्य अभ्यावेदन) = आसानी उपयोग की

+1

मैं समानता को उलट दूंगा; ऐरे 4x4 कार या एक एफ 1 है जिसमें बहुत सारी घोड़े की शक्ति है जो आपको बहुत आसान बनाता है जब आप उन्हें संभालने में अनुभव नहीं करते हैं; जबकि सूची एक पारिवारिक कार या सिटी कार है जो कम लचीलापन की लागत पर कई सुरक्षा सुविधाएं प्रदान करती है (उदाहरण के लिए आसानी से ऑफ रोड जाने में सक्षम नहीं है)। –

+0

@ ली रयान यह एक समानता है इसलिए मुझे लगता है कि आप इसे और अधिक तरीकों से स्पिन कर सकते हैं :) मैं आपके साथ भी सहमत हूं। – Kelsey

+0

@ ली: उत्पादन कोड में, लिंक्ड सूचियां उससे कम आम होती हैं। यदि आप कभी भी अपना कंटेनर प्रकार लिख रहे हैं, तो सरणी से शुरू करें और केवल आपको लिंक की गई सूची सुविधाओं में जोड़ें यदि आपको वास्तव में उनकी आवश्यकता है। (मैंने हाइब्रिड संस्करण किए हैं जो सरणी तत्वों की एक लिंक की गई सूची का उपयोग करते हैं; एल्गोरिदम को संयोजन की आवश्यकता होती है, लेकिन डेटा संरचना अन्य चीजों के लिए बहुत पुन: प्रयोज्य नहीं थी। हालांकि मैं जो कर रहा था उसके लिए तेज और कुशल चमक रहा था, और यह नाखुश हो गया पूरी तरह से प्रोग्राम में महत्वपूर्ण बाधा। :-)) –

1

नहीं है, सरणी नहीं खो देंगे इसका महत्व

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

2- ग्राफ थ्रॉय में, फिर भी जब आप वर्टेक्स के बीच लिंक के बारे में जानकारी संग्रहीत करते हैं, तो आप लिंकलेस्ट कार्यान्वयन से अधिक तेज़ एरे का उपयोग करके प्रत्यारोपण कर सकते हैं।

3- string.split रिटर्न सरणी जैसे कुछ विधियां।

आप कंप्यूटर समस्याओं

1

मैं सरणियों का उपयोग WritableBitmap कक्षा में तरह छवियों maniulate करने की एक हक़ीक़त में आइटम की इस अद्भुत स्थिर प्लेसहोल्डर उपयोग कर सकते हैं।

2

दो मामलों में जहां मैं सरणियों के साथ दैनिक काम:

  • छवि विश्लेषण। छवियां लगभग हमेशा बाइट [] या int [] arrays हैं।
  • बाहरी हार्डवेयर संचार। अधिकांश उपकरणों को संदेशों को भेजने/प्राप्त करने के लिए पूरी तरह से संरचित सरणी की आवश्यकता होती है।
3

काफी बाकी सब से अलग, उन महान संग्रह वर्गों में से कई आप सरणियों का उपयोग करके लागू को देखें। हो सकता है कि आप उन्हें स्पष्ट रूप से उपयोग न करें, लेकिन आप उनमें से लोड का उपयोग कर रहे हैं और आपका प्रोग्राम इसके लिए बेहतर है। इसका मतलब है कि भाषा में हो (या संग्रह सीधे मूल कोड का उपयोग करके लागू किए जाते हैं, जो चूसने वाला होगा)।

1

एक बात मुझे आपको बताना होगा Arrays किसी भी प्रोग्रामिंग भाषा के लिए बिल्डिंग ब्लॉक हैं। यदि आप एक से अधिक तत्व वाले भंडारण की घोषणा करना चाहते हैं, तो Arrays आपके लिए मूल विकल्प हैं।

उदाहरण के लिए एक सूची कहें।

आप सूची की परिभाषा देखते हैं, तो यह वास्तव में

टी []

बस परावर्तक का उपयोग करें और सूची की परिभाषा आइटम रखती है, आप सूची पता लगाने के लिए वास्तव में एक श्रृंखला होना चाहिए हैरान होंगे । .NET में LinkedList के अलावा अधिकांश संग्रह मूल रूप से एक ऐरे कार्यान्वयन होते हैं। उन्होंने अपने तेज भंडारण और पुनर्प्राप्ति के कारण ऐरे का उपयोग किया।

मैं मानता हूं कि यदि आपके मुख्य जोर गति से भंडारण में हैं, तो ऐरे को अद्यतन या निकालने की सीमा है, तो आप लिंक्ड लिस्ट के लिए जा सकते हैं।

4

क्या सरणी खो गई हैं (कुछ) महत्व?

हां। वस्तुओं के 'टेबल' की आवश्यकता वाले कई कार्यों के लिए अब List<> और IEnumerable<> जैसे अधिक लचीला और उपयोगी समाधान हैं।

क्या सरणी अपना महत्व खो चुके हैं?

नहीं। वे भंडारण का सबसे तेजी से रूप हैं और वे संग्रह वर्गों के अधिकांश में, System.String 'हुड के नीचे' उपयोग किया जाता है आदि

तो, सरणियों अधिक निम्न स्तर के हो गए हैं, और एक आवेदन प्रोग्रामर उन्हें सीधे कम से कम उपयोग करेगा।

1

आपको लगता है कि उन फैंसी संग्रहों के पीछे बैकिंग फ़ील्ड क्या है?

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