2009-04-13 16 views

cevap

16

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.

+0

Ah, evet, bu mantıklı. HashSet de aynı sebepten dolayı IsReadOnly gizler, bu yüzden kullanmayı denerseniz derleme hatası. –

+0

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

5

temelde açık bir arayüz uygulaması (: MSDN kaynak): başvuracaktır iki nedeni vardır

  1. Aynı imzaları taşıyan üyeleri ile çok sayıda arabirimlerini ve bu üyeler farklı davranır istiyorum.
  2. Bir arabirim üyesi, sınıf için özellikle ilgi çekici değildir, ancak arabirim tarafından nesnelerin başvurulması için gereklidir. Bir karma seti salt okunur asla ve IsReadOnly böylece her zaman false dönecektir olarak HashSet<T> için

, bu son durumda geçerlidir.