System.Array真的实现了ICollection吗?

时间:2014-05-01 20:36:27

标签: c# arrays icollection

根据MSDN docs,System.Array实现ICollection,但System.Array不提供Count属性(当然你总是可以使用LINQ Count()扩展方法,但是没有这个名字的属性)。怎么会这样?不需要数量吗?

3 个答案:

答案 0 :(得分:8)

explicitly implemented是这样的:

int ICollection.Count
{
    get
    {
        return Length;
    }
}

您可以在MSDN上阅读有关显式接口实现的更多信息。

答案 1 :(得分:2)

来自Array.ICollection.Count Property - MSDN

  

此成员是显式接口成员实现。它可以   仅在将Array实例强制转换为a时才使用   T:System.Collections.ICollection接口。

答案 2 :(得分:1)

来自文档:

“从.NET Framework 2.0开始,Array类实现System.Collections.Generic.IList< T>,System.Collections.Generic.ICollection< T>和System.Collections.Generic.IEnumerable< T>通用接口。这些实现在运行时提供给数组,因此对于文档构建工具是不可见的。因此,通用接口不会出现在Array类的声明语法中,并且没有参考主题只能通过将数组转换为通用接口类型(显式接口实现)才能访问的接口成员。将数组转换为其中一个接口时要注意的关键是添加,插入或删除元素的成员抛出NotSupportedException异常“。