7

使用するC#コレクションの種類を選択するための私の戦略は次のとおりです。

  • コレクション内のアイテムの数が固定されている場合は、配列を使用します。例:

    string [] direction = new string [] {"north"、 "south"、 "east"、 "west"};

  • それ以外の場合は常に使用してくださいList<T>

  • もちろん、より専門的なコレクションが必要な場合を除きます。Stack<T>, Queue<T>, or Dictionary<TKey, TValue>

  • ただし、ArrayListはもう使用しないでください

あなたの経験に基づいて、この戦略に欠けているものは何ですか?

4

3 に答える 3

7

ルールは正常に機能します。

加えて:

  • object非ジェネリック(ベース)コレクションよりもジェネリック(または特殊)コレクションを常に優先します。
  • HashSet<T>Key-Value-Mapping(で表される)ではなく、単なる存在を確認する場合に使用しますDictionary
  • 辞書の場合、順序付けが重要であると思われる場合は、順序付けされたマップ(SortedList<...>、 )の使用を検討してください。SortedDictionary<...>
  • 途中で削除/挿入操作がある場合は、リンクリストを使用してください。

そしてもちろん最も重要なもの:

  • 具体的なコレクションタイプをエクスポートしない:常に最も一般的なインターフェイスを使用します。これは、ほとんどの場合、IList<T>またはIEnumerable<T>です。
于 2010-08-08T20:22:31.290 に答える
5

ほとんどの場合、コレクション内のアイテムの数を知っていても、提供されるユーティリティ関数の数とLINQとの互換性のために、Listを使用します。

ハッシュマップは、コレクション内のアイテムにすばやくアクセスしたい場合の重要なユースケースです。

于 2010-08-08T20:19:21.413 に答える
1

You can also use Collection<T> if you plan to override add/remove/clear methods in an inherited class because there are virtual methods.

于 2010-08-09T07:11:59.040 に答える