38

いつList< string >を使用する必要があるのか​​ 、いつStringCollectionを使用する必要があるのか​​ 疑問に思っていました。

多数の文字列 (10 MB のテキスト ファイルなど) を処理する必要があるとしましょう。

List< T >がStringCollectionよりも強力な機能を提供する ことは知っています。

しかし、たとえば Gridview にそのデータソースが List< String > であることを伝えると、 List< T >が遅くなることがあります...

メモリ内の速度と重量に関して、これらのコレクションの長所と短所を知っている人はいますか?

それらの機能に関しては、リストが最高であると誰もが言うことに同意すると確信しているので、私の質問はそれについてではありません. 質問はFrameworks 4.0のプロジェクトに関するものであるため、両方を使用できると考えてください。

4

3 に答える 3

52

私は個人的に使用したいと思いますList<string>

  • 文字列のためだけに特定のタイプを覚えておく必要はありません
  • IEnumerable<T>単なるではなくジェネリックを実装しているIEnumerableため、LINQをサポートしています
  • SilverLightでサポートされています
  • ほとんどの開発者にとっては慣用的です(IMO)

StringCollection私は、それよりもはるかに高速であることに本当に驚いていますList<string>-数字でそれをバックアップできるかどうかを確認してください。私の躊躇の唯一の原因は、そのタイプで高速GridView化するためのハードコードされたサポートがある可能性があるStringCollectionことです-しかし、それは私にはかなりありそうもないように聞こえます。

于 2011-10-14T22:56:46.290 に答える
26

パフォーマンスと効率の点では、それらは非常に似ています。

List<string>実際には少し速いかもしれません。これは、プレジェネリックArrayListのラッパーのようなものです。ボクシング/アンボクシングはありませんが、内部に追加のステップが1つか2つあります。IIRCです。

StringCollectionは、.NET 2.0より前は、文字列に強く型付けされていたため便利でした。これは、リストが必要な非常に一般的なことです。ただし、今すぐ使用することをお勧めしList<string>ます。ほとんどのフレームワークとサードパーティのアセンブリはStringCollectionではなくそれを使用するため、これは次のようになります。

  • 多くのキャストを避けてください
  • 混乱を避けてください。他の(特に新しい)開発者は、StringCollectionを使用する理由が何であるかを常に疑問に思っています。
于 2011-10-14T22:54:34.203 に答える