パブリック API がリストを返してはならないという規則に従って、リストを返すすべてのコードを盲目的に変換して、ICollection<T>
代わりに返すようにしています。
public IList<T> CommaSeparate(String value) {...}
になる
public ICollection<T> CommaSeparate(String value) {...}
ICollection
にはがありCount
ますが、そのインデックスでアイテムを取得する方法はありません。
はICollection
列挙子を公開しますが (許可foreach
)、列挙の順序がリストの「下」ではなく「上」から始まるという保証はありません。
の使用を避けることでこれを軽減しICollection
、代わりに次を使用できますCollection
。
public Collection<T> Commaseparate(String value) {...}
これにより、Items[index]
構文を使用できます。
残念ながら、私の内部実装は配列を構築します。orを返すようにキャストできますが、 としてキャストすることはできません。IList
ICollection
Collection
コレクションのアイテムに順番にアクセスする方法はありますか?
これは、より広い疑問を投げかけます: ICollectionには順序がありますか?
概念的には、コマンド ライン文字列を解析したいとします。アイテムの順序を維持することが重要です。
概念的には、文字列タプルの「順序付けられた」セットを示すコントラクトが必要です。API コントラクトの場合、順序を示すために正しいのは次のうちどれですか。
IEnumerable<String> Grob(string s)
ICollection<String> Grob(string s)
IList<String> Grob(string s)
Collection<String> Grob(string s)
List<String> Grob(string s)