【问题标题】:Where is List<T>.IsReadOnly?List<T>.IsReadOnly 在哪里?
【发布时间】:2012-02-10 15:52:38
【问题描述】:

在 .Net Framework 中,List&lt;T&gt; 实现了ICollection&lt;T&gt; 接口。但是,在 Visual Studio 中查看 List 类时,我看不到 IsReadOnly 属性,这应该是在 ICollection&lt;T&gt; 接口中。

一个类怎么可能实现一个接口......但没有真正实现它?

【问题讨论】:

    标签: .net list interface


    【解决方案1】:

    它使用explicit interface implementation。例如:

    public interface IFoo 
    {
        void Bar();
    }
    
    public Foo : IFoo
    {
        // Note the lack of public here
        void IFoo.Bar() {}
    }
    

    【讨论】:

    • 我讨厌对象以这种方式实现IDisposable。你输入.D,而Dispose 没有出现,你想,好吧,几年后你突然发现你应该是using 那个对象,因为它实际上必须被处置。
    【解决方案2】:

    IsReadOnly 列在the documentation 的显式接口实现部分下。

    【讨论】:

      【解决方案3】:

      它使用显式接口实现。只有将列表用作特定接口时才能看到实现:

      List<int> x = new List<int>();
      
      bool b1 = x.IsReadOnly; // not accessible
      
      ICollection<T> y = x;
      
      bool b2 = y.IsReadOnly; // accessible
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-10-23
        • 2011-03-13
        • 1970-01-01
        • 2021-09-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多