共分散と IList: インデックス検索用のコレクションの拡張
C# では、共変コレクションにより、子コレクションを使用して親コレクションから項目を取得できます。ただし、標準の IEnumerable
Since List
この問題に対処するために、.NET 4.5 以降では IReadOnlyList
両方のリスト
ただし、get インデクサーと set インデクサーの両方を備えた共変コレクションが必要な場合、オプションは限られています。考えられる解決策は、既存の IList
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> { private readonly IList<T> tail; public T this[int index] => tail[index]; public IEnumerator<T> GetEnumerator() => tail.GetEnumerator(); public int Count => tail.Count; } } public interface IIndexedEnumerable<out T> : IEnumerable<T> { T this[int index] { get; } int Count { get; } }
このアプローチは、IEnumerable
以上がC# でインデックス ルックアップを使用して共変コレクションを実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。