7

什么是 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

4 回答 4

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

于 2012-06-07T20:01:07.783 回答
6

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

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

  • 数组段
  • 列表
  • ListT.SynchronizedList
  • 链表
  • 排序列表
  • 排序集

... 和更多

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

于 2012-06-07T21:08:21.387 回答
1

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

这是如何实现该接口的示例

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

通用列表实现了这个接口

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

于 2012-06-07T20:01:50.313 回答
1

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

文档中:

任何类型的对象都可以分组到 Object 类型的单个集合中,以利用语言中固有的构造。例如,C# foreach 语句(Visual Basic 中的 for each)要求集合中的所有对象都是单一类型。

ICollection是集合的接口定义。

于 2012-06-07T20:02:06.167 回答