Kovarian dan IList: Memperluaskan Koleksi untuk Carian Indeks
Dalam C#, koleksi kovarian membenarkan mendapatkan semula item daripada koleksi induk menggunakan koleksi anak. Walau bagaimanapun, standard IEnumerable
Sejak Senarai
Untuk menangani isu ini, .NET 4.5 dan kemudiannya memperkenalkan IReadOnlyList
Kedua-dua Senarai
Walau bagaimanapun, jika anda memerlukan koleksi kovarian dengan pengindeks get dan set, pilihan adalah terhad. Penyelesaian yang berpotensi ialah membungkus 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; } }
Pendekatan ini menyediakan koleksi kovarian yang menyokong kedua-dua IEnumerable
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencapai Koleksi Kovarian dengan Carian Indeks dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!