添加到 ICollection

24

我目前正在编写一个C#项目,需要为该项目进行单元测试。在我需要进行单元测试的方法中,我使用了一个ICollection,通常是通过列表框中选择的项目来填充它。

当我为该方法创建一个单元测试时,它会生成以下代码行:

ICollection icollection = null; //Initialise to an appropriate value

我该如何创建这个ICollection的实例并向集合中添加一个元素?

5个回答

36

ICollection 是一个接口,你不能直接实例化它。你需要实例化实现了 ICollection 接口的类,例如 List<T>。另外,ICollection 接口 没有 Add 方法 -- 你需要使用实现了 IListIList<T> 接口的类。

示例:

List<object> icollection = new List<object>();
icollection.Add("your item here");

但是List<object>没有实现ICollection接口。Boardy要求一个ICollection。 - user410989
@Hungary1234 List<object> 实现了 IList 接口,而 IListICollection 的子接口。因此,List<object> 也是一个 ICollection - Donut
3
@Donut写的评论让我觉得需要在结尾处加上“QED”。 - DFTR
1
@Donut 谁说 "ICollection 接口没有 Add 方法" 的?你看过这个链接吗 http://msdn.microsoft.com/en-us/library/63ywd54z.aspx - Atish Kumar Dipongkor
7
该链接指的是ICollection<T>接口,它与ICollection接口不同。您是正确的,ICollection<T>包含一个Add()方法;然而,ICollection没有:http://msdn.microsoft.com/en-us/library/system.collections.icollection.aspx - Donut

5
List<Object> list = new List<Object>();
list.Add(object1);
list.Add(object2);
// etc...

ICollection collection = list;
// further processing of collection here.

与某些评论相反,IList<T> 实现了 ICollection 接口,至少我是这么看的。

3

假设你有一组字符串,那么代码将会是:

ICollection<string> test = new Collection<string>();
test.Add("New Value");

0
你可以创建一个实现ICollection接口的类型,并在测试中使用它。List或Collection都可以用于创建对象实例。另外一个问题是ListBox中的项是什么类型。使用.Add(...)方法将项目添加到List或Collection中非常简单。
List<T> list = new List<T>();
list.Add(item_from_your_list_box);
list.Add(item2_from_your_list_box);

你需要对这个集合做更具体的操作吗?


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接