C # में डायनामिक ऐरे


112

क्या C # में डायनामिक ऐरे बनाने की कोई विधि है?


1
यदि आप अभी भी पुरानी मिट्टी में फंस गए हैं, तो [] के बजाय यदि सूची <> का उपयोग करके, आप Array.Resize () का उपयोग कर सकते हैं। यहाँ एक अच्छा उदाहरण है। dotnetperls.com/array-resize
Gian

लिंक dotnetperls.com/array-resize काम नहीं कर रहा है। (FYI करें)
Su Llewellyn

जवाबों:


150

जेनेरिक सूचियों पर एक नज़र डालें ।


13
प्रश्न (यद्यपि संक्षिप्त और अवांछनीय) सामान्य सूची के बारे में नहीं पूछ रहा है - प्रश्न dynamic[] msdn.microsoft.com/en-GB/library/dd264736.aspx (गतिशील प्रकारों का सरणी) या ExpandoObject msnn.microsoft.com/ के बारे में पूछ सकता है। en-us / पुस्तकालय / ... मैं इनका उल्लेख नहीं करने के लिए -1 जवाब दे सकता था
ल्यूक टी ओ'ब्रायन

6
@ ल्यूकोटी ब्रायन, गतिकी को C # 4.0 में पेश किया गया था, जिसे इस सवाल के मूल रूप से पूछे जाने के एक पूरे साल बाद जारी किया गया था। ओपी संभवत: en.wikipedia.org/wiki/Dynamic_array
ब्रायन मेरेल

6
लेखों के केवल लिंक से जुड़े उत्तर अप्राप्य हैं। कोई गारंटी नहीं है कि लिंक सक्रिय रहेगा।
जमैबुलफर

@JamEngulfer यह असत्य है। यदि उसका लिंक टेक्स्ट "इस" के साथ "इस" लिंक से जुड़ा हुआ था, तो मैं आपसे सहमत हूँ। यदि आप लिंक को हटाते हैं, और जो कुछ बचा है, उसे देखें, किसी भी भविष्य के पाठक को पाने के लिए ओपी का जवाब "जेनेरिक सूचियों पर एक नज़र रखना" बहुत है ....
लिन क्रंबलिंग

88

एक कोड नमूने के साथ क्रिस और मिगोल के उत्तर पर विस्तार।

एक सरणी का उपयोग करना

Student[] array = new Student[2];
array[0] = new Student("bob");
array[1] = new Student("joe");

जेनेरिक सूची का उपयोग करना। हुड के तहत सूची <टी> वर्ग भंडारण के लिए एक सरणी का उपयोग करता है, लेकिन एक फैशन में ऐसा करता है जो इसे कुशलता से बढ़ने की अनुमति देता है।

List<Student> list = new List<Student>();
list.Add(new Student("bob"));
list.Add(new Student("joe"));
Student joe = list[1];

2
यह उदाहरण आधा बुरा है, क्योंकि हम दोनों ने ArrayList के बारे में बात की थी
मिगोल

21
यह उत्तर आपके @Migol से बेहतर है, क्योंकि यह दिखाता है कि वास्तव में केवल कीवर्ड के रूप में उल्लेख करने के बजाय सूची <> का उपयोग कैसे करें। "आधा-बुरा" -> "आधा-अच्छा" -> अच्छा
fhugas

56

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

इस मामले में आप अपनी सूची को गतिशील रूप से आरंभ करने के बाद ToArray () विधि का उपयोग कर सकते हैं

List<string> list = new List<string>();
list.Add("one");
list.Add("two");
list.Add("three");

string[] array = list.ToArray();

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


1
इसके लायक नहीं, जब तक कि आप इंडेक्सर का उपयोग कर रहे हैं।
आनिम्र

2
Ararys अधिक सुविधाजनक नहीं हैं (वे सूची <T> इंटरफ़ेस का सबसेट प्रस्तुत करते हैं) और लगभग समान प्रदर्शन प्रदान करते हैं, क्योंकि सूची <T> नीचे नियमित सरणी का उपयोग करता है। 6000000 तत्वों के लिए पुनरावृत्ति: सूची / के लिए: 1971ms सरणी / के लिए: 1864ms ( stackoverflow.com/chestions/454916/… से बेंचमार्क )
आनिमर

9
आप तो है एक अंतरफलक के लिए एक सरणी पारित करने के लिए तो यह चाहिए एक श्रृंखला होना चाहिए। सूची बनाना और फिर इसे पास करने से पहले इसे एक सरणी में बनाना बहुत आसान है। मुझे यह उत्तर दूसरों की तुलना में अधिक पसंद है क्योंकि यह प्रश्न को संबोधित करता है!
माइकल स्टिमसन

36

List<T>दृढ़ता से टाइप किए गए एक के लिए, या ArrayListयदि आपके पास .NET 1.1 है या चर चरना पसंद है।


2

गतिशील सरणी उदाहरण:

Console.WriteLine("Define Array Size? ");
int number = Convert.ToInt32(Console.ReadLine());

Console.WriteLine("Enter numbers:\n");
int[] arr = new int[number];

for (int i = 0; i < number; i++)
{
    arr[i] = Convert.ToInt32(Console.ReadLine());
}
for (int i = 0; i < arr.Length; i++ )
{
    Console.WriteLine("Array Index: "+i + " AND Array Item: " + arr[i].ToString());
}
Console.ReadKey();

2

आप इसे गतिशील वस्तुओं के साथ कर सकते हैं:

var dynamicKeyValueArray = new[] { new {Key = "K1", Value = 10}, new {Key = "K2", Value = 5} };

foreach(var keyvalue in dynamicKeyValueArray)
{
    Console.Log(keyvalue.Key);
    Console.Log(keyvalue.Value);
}

1

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


1

आप संग्रह वर्ग से सरणी सूची ऑब्जेक्ट का उपयोग कर सकते हैं

using system.collections;
   static void main()
        {
        Arrylist arr=new Arrylist();
         }

whe n आप उस तत्व को जोड़ना चाहते हैं जिसका आप उपयोग कर सकते हैं

arr.add();

0
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.