インデックスのサポートによるコレクションの共分散
コレクションの共分散により、基本型に対して宣言されたコレクションに派生項目を格納できます。ただし、デフォルトの共変コレクション IEnumerable にはインデックスのサポートがありません。
質問者が指摘しているように、List
考えられる解決策
.NET 4.5 以降、IReadOnlyList
共変ラッパーの作成
インデックスをサポートする書き込み可能なコレクションが必要な場合は、IList< をラップする拡張メソッドを作成できます。 ;T>そして、必要な共分散を提供するメソッドのサブセットのみを公開します:
public static class Covariance { public static IIndexedEnumerable<T> AsCovariant<T>(this IList<T> tail) { return new CovariantList<T>(tail); } private class CovariantList<T> : IIndexedEnumerable<T> { // Implementation... } }
このラッパー クラス CovariantList
AsCovariant
以上がコレクションでインデックスをサポートして共分散を実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。