2012-04-12 25 views
112

この例では、配列タイプに.ToList()を使用していますが、これはin .Net 3.5+しか利用できないようです。私はこの時点でアップグレードすることができないASP.NETプロジェクトで.NET Framework 2.0を使用しているので、私は疑問に思っていました。もう一つの解決策はありますか? 1つは、配列をループして各リストをこのListに追加するよりもエレガントです(これは問題ありません;学習目的のためのより良いソリューションがあるかどうかは疑問です)。文字列の配列をリストに変換する<string>

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

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

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

私はこのようにそれをしなければならない場合、私は私のリストにそれをコピーした後、メモリからの長引く配列の割り当てを解除する方法はありますか?

+1

'arr'のクリーンアップについて心配する必要はありません。ガベージコレクタは、あなたよりもはるかに優れた仕事をします。 –

+4

私は具体的に..または一般的に開発者ですか?特に –

+29

です。そして私。実際、Jon Skeetさんだけが自分のガベージコレクションを行うことが許可されていると思います。 –

答えて

303

this constructorList<T>とだけ使用してください。これは引数としてIEnumerable<T>を受け付けます。

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

.Net 3.5から、(時には)コードフローを少し良くするLINQ拡張メソッドを使用できます。

using System.Linq; 

// ... 

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

PS:

使い方は次のようになります。他の方法で動作するToArray()メソッドもあります。

関連する問題