191

.ToList()配列型を使用してこれを行った例を見てきましたが、これは .Net 3.5+ でのみ使用できるようです。現時点ではアップグレードできない ASP.NET プロジェクトで .NET Framework 2.0 を使用しているので、別の解決策はあるのでしょうか? 配列をループして各要素をこのリストに追加するよりもエレガントなもの (これは問題ありません。学習目的のためのより良い解決策があるかどうか疑問に思っているだけです)。

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

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

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

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

4

2 に答える 2

471

のこのコンストラクタを使用するだけですList<T>IEnumerable<T>anyを引数として受け入れます。

string[] arr = ...
List<string> list = new List<string>(arr);
于 2012-04-12T18:20:38.690 に答える
36

.Net 3.5 からは、LINQ 拡張メソッドを使用して (場合によっては) コード フローを少し改善できます。

使用法は次のようになります。

using System.Linq; 

// ...

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

PS。他のToArray()方法で機能する方法もあります。

于 2016-12-12T20:51:20.093 に答える