2012-04-12 10 views
112

में मैंने सरणी प्रकारों पर .ToList() का उपयोग करके किए गए उदाहरणों को देखा है, ऐसा लगता है कि यह केवल in .Net 3.5+ उपलब्ध है। मैं एक एएसपी.नेट परियोजना पर .NET Framework 2.0 के साथ काम कर रहा हूं जिसे इस समय अपग्रेड नहीं किया जा सकता है, इसलिए मैं सोच रहा था: क्या कोई और समाधान है? वह जो सरणी के माध्यम से लूपिंग से अधिक सुरुचिपूर्ण है और इस सूची में प्रत्येक तत्व जोड़ रहा है (जो कोई समस्या नहीं है; मैं सोच रहा हूं कि सीखने के उद्देश्यों के लिए कोई बेहतर समाधान है या नहीं)?स्ट्रिंग्स की सरणी को सूची <string>

string[] arr = { "Alpha", "Beta", "Gamma" }; 

List<string> openItems = new List<string>(); 

foreach (string arrItem in arr) 
{ 
    openItems.Add(arrItem); 
} 

मैं इसे इस तरह से करने के लिए है, तो स्मृति से सुस्त सरणी पुनःआवंटन करने के बाद मैं इसे अपने सूची में नकल के लिए एक रास्ता है?

+1

अपने 'एआर' को साफ करने के बारे में चिंता न करें, कचरा कलेक्टर आपके से बेहतर काम करेगा। –

+4

मुझे विशेष रूप से .. या डेवलपर्स सामान्य रूप से? –

+29

आप विशेष रूप से। और मैं। वास्तव में, मुझे लगता है कि केवल जॉन स्कीट को अपना कचरा संग्रह करने की अनुमति है। –

उत्तर

303

List<T> के this constructor का उपयोग करें। यह तर्क के रूप में IEnumerable<T> स्वीकार करता है।

string[] arr = ... 
List<string> list = new List<string>(arr); 
5

नेट 3.5 से आप LINQ एक्सटेंशन विधि का उपयोग कर सकते हैं (कभी-कभी) कोड प्रवाह को थोड़ा बेहतर बनाता है।

प्रयोग इस तरह दिखता है:

using System.Linq; 

// ... 

public void My() 
{ 
    var myArray = new[] { "abc", "123", "zyx" }; 
    List<string> myList = myArray.ToList(); 
} 

पी एस। ToArray() विधि भी है जो अन्य तरीकों से काम करती है।

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