2009-03-21 29 views
28

何らかの配列に保持されている文字列のうち、あらかじめ設定されていない上限を持つ配列には、どのようなものが最も適していますか?以下のような単純なコードの場合ベスト・ストリング・コンテナ:StringCollection、Collection <string>、List <string>、ArrayList、..?

var list = new SomeContainer(); // size is unknown 
for()/foreach()/do()/while() // any loop 
{ 
    list.Add(string); 
} 

はそれが最適化された文字列のコレクション、または単にCollection<string>またはList<string>またはArrayListなどStringCollectionですか?彼らの違いは何ですか?

+0

パフォーマンスに関する具体的な質問:https://stackoverflow.com/questions/7774374/performance-concern-stringcollection-vs-liststring –

答えて

34

必要な場合は、List<string>がおそらく最も汎用性があります。 StringCollectionは、(ジェネリックではなく)型付きコレクションのための特定のクラスが必要なときに、1.1で便利でした。

が、LINQのない List<T>は、より多くの機能( FindSort、など)を持っている - あなたが検証を提供するために、それをサブクラス化したい場合 Collection<string>は、いずれかの方法では、3.5で、LINQは、彼らのために追加のメソッドの多くを提供しますなど

便利です

14

List<T>が最も効率的です。

Collection<T>クラスは、別のタイプのリストの単なるラッパーです。パラメータのないコンストラクタはCollection<T>List<T>で初期化します。

ArrayListは本質的にはList<object>と同じですので、アイテムを読むときはStringにキャストする必要があります。

StringCollectionは、ArrayListのタイプセーフなラッパーです。