什么是ICollection?

时间:2012-06-07 19:58:54

标签: c# .net

C#中的ICollection是什么?

private void SendEmail(string host, int port,
        string username, string password,
        string from, string to,
        string subject, string body,
        ICollection<string> attachedFiles)

4 个答案:

答案 0 :(得分:9)

ICollection<T>接口是System.Collections.Generic命名空间中的类的基本接口。

ICollection<T>界面扩展IEnumerable<T>,并由IDictionary<TKey, TValue>IList<T>扩展。

IDictionary<TKey, TValue>实现是键/值对的集合,如Dictionary<TKey, TValue>类。

IList<T>实现是值的集合,其成员可以通过索引访问,如List<T>类。

http://msdn.microsoft.com/en-us/library/92t2ye13.aspx

答案 1 :(得分:6)

我认为OP实际上试图理解的是实现ICollection<string>的原因,显然new ICollection<string>()不会飞。

正如Micah所指出的那样,List<string>实现了ICollection<string>。如果你想知道还有什么,看看ILSpy,找到ICollectin<T>类型,分析它,看看它实现了什么。以下是我的一些结果

  • ArraySegment
  • 列表
  • LisT.SynchronizedList
  • 链表
  • SortedList
  • 的SortedSet

......还有更多

此外,普通的'string数组也实现了ICollection<string>

答案 2 :(得分:1)

ICollection是一个代表集合的接口,它还包含强类型成员

以下是如何实现该接口的示例

http://support.microsoft.com/kb/307484

通用列表实现此接口

http://msdn.microsoft.com/en-us/library/6sh2ey19.aspx

答案 3 :(得分:1)

集合是一组具有相同类型的对象(示例中为字符串)。

来自documentation

  

任何类型的对象都可以分组为单个集合   键入Object以利用其中固有的构造   语言。例如,C#foreach语句(对于Visual中的每个语句)   Basic)期望集合中的所有对象都是单一类型。

ICollection是集合的接口定义。