たぷつきません

おなかがでてきた。もうたぷついてるやん。

どこに消えたかIsReadOnly

 とても不思議な現象にあっている。List は IList を実装していて、IListはICollectionの継承。でICollectionにあるはずのIsReadOnlyが、Listからは呼び出せない。

    List<string> list = new List<string>();
    bool a = list.IsReadOnly;       // ← そんな定義は見つからないというコンパイルエラー。
    IList<string> ilist = list;
    a = ilist.IsReadOnly;   // 問題ない。

どんな方法を使えばこんなことが実現できるのかとても興味深い。ただのバグだったらやだけど。

追記

 明示的実装をするだけで消えるということのようです。限定させればちょっとした隠蔽ができるというのは結構うれしい。ただ GetEnumeratorは明示的実装をしても、foreach で引っ掛かってくれます。