Dari apa yang saya tahu, .NET 4.0 masih kekurangan daftar hanya-baca. Mengapa kerangka kerja masih kekurangan fungsi ini? Bukankah ini salah satu bagian fungsionalitas yang paling umum untuk desain berbasis domain ?
Salah satu dari sedikit keunggulan Java dibandingkan C # adalah dalam bentuk metode Collections.unmodifiablelist (daftar) , yang tampaknya sudah lama tertunda di IList <T> atau List <T>.
Menggunakan IEnumerable<T>
adalah solusi termudah untuk pertanyaan - ToList
dapat digunakan dan mengembalikan salinan.
c#
java
.net
readonly-collection
Chris S
sumber
sumber
List<T>
adalah dengan menulis milik Anda sendiri, tidak ada kelas bawaan yang saya tahu yang mendukung semua fitur "hanya baca" diList<T>
luar kotak sepertiContains
, kueri LINQ, dll.Jawaban:
Anda sedang mencari
ReadOnlyCollection
, yang sudah ada sejak .NET2.atau
Hal ini menciptakan read-only pandangan , yang mencerminkan perubahan yang dibuat untuk koleksi dibungkus.
sumber
Bagi mereka yang suka menggunakan antarmuka: .NET 4.5 menambahkan
IReadOnlyList
antarmuka generik yang diimplementasikan olehList<T>
misalnya.Ini mirip dengan
IReadOnlyCollection
dan menambahkanItem
properti pengindeks.sumber
Bagaimana dengan ReadOnlyCollection yang sudah ada dalam kerangka kerja?
sumber
Jika pola daftar yang paling umum adalah mengulang melalui semua elemen,
IEnumerable<T>
atau jugaIQueryable<T>
dapat bertindak sebagai daftar hanya-baca secara efektif.sumber
ToList()
, cukup salinIEnumerable
ini bukan satu set lengkap metode "hanya baca", misalnya tidak berisi metode sepertiContains
.Dalam 2.0 Anda dapat menelepon
AsReadOnly
untuk mendapatkan versi hanya-baca dari daftar. Atau bungkus yang adaIList
di suatuReadOnlyCollection<T>
objek.sumber
Apa yang salah dengan System.Collections.ObjectModel.ReadOnlyCollection ?
sumber