BuNeden HashSet <T> .IsReadOnly açık?
var h = new HashSet<int>();
var r = h.IsReadOnly;
derleme değil. Yapmam gereken neden normalde IsReadOnly uygulanmadı mı? (Ben nasılsormuyorum ama neden)
BuNeden HashSet <T> .IsReadOnly açık?
var h = new HashSet<int>();
var r = h.IsReadOnly;
derleme değil. Yapmam gereken neden normalde IsReadOnly uygulanmadı mı? (Ben nasılsormuyorum ama neden)
tahmin ediyorum onun HashSet ICollection uygulayan ederken, IsReadOnly HashSet için bir anlamı yoktur, çünkü. Aslında, eğer yansıtırsanız, mülk her zaman yanlış döner. Bunu uygulamak, bu yöntemi genel arabirimden açıkça gizler. Başka bir nedeni, ICollection arayüzünün, sınıfın birincil kullanımı için gerekli olmasından ziyade, rastlantısal nedenlerden (ör., Xaml serileştirmeyi desteklemek için) uygulanabilmesidir. Bunu açıkça uygulamak, dağınıklığı sınıfın 'arayüzünden uzak tutabilir.
temelde açık bir arayüz uygulaması (: MSDN kaynak): başvuracaktır iki nedeni vardır
IsReadOnly
böylece her zaman false
dönecektir olarak HashSet<T>
için, bu son durumda geçerlidir.
Ah, evet, bu mantıklı. HashSet de aynı sebepten dolayı IsReadOnly gizler, bu yüzden kullanmayı denerseniz derleme hatası. –
BTW, xaml serileştirmesi için ICollection uygulamanız gerekmez; koleksiyonlar IDictionary veya IList'i uygulamalıdır. Arayüzle ilgili nedenlerden dolayı bir arabirime başvurmanız gerekebileceği durumlar sadece bir örnektir. – Will