在我的IList myList = new List<someType>();
中,假设有3个元素,如果我调用myList.Clear();
,仍然存在3个null
元素!
Getter / Setter:
public IList MyList
{
get { return myList ; }
set { myList = value; }
}
所以我想从IList中清除并删除所有项目!我该怎么办?
答案 0 :(得分:1)
我认为您错过了一些注意事项,或者没有正确使用调试器监视对象。 .Clear()
没有任何问题,它可以正常工作,并且可以从IList中删除所有项目。这是给您的working example:
public class sampleClass{
private IList myList;
public IList MyList
{
get { return myList ; }
set { myList = value; }
}
}
// Usage
sampleClass objClass = new sampleClass();
objClass.MyList = new List<string> { "A", "B", "C" };
Console.WriteLine(objClass.MyList.Count); // Will print 3
Console.WriteLine(objClass.MyList[0]); // will print A
objClass.MyList.Clear();
Console.WriteLine(objClass.MyList.Count); // Will print 0
Console.WriteLine(objClass.MyList[0]); // will throw Index was out of range Exception
这是基于您帖子中的可用信息,如果添加更多相关代码,则我可以据此进行解释。
答案 1 :(得分:0)
如果仔细阅读文档,将找到答案: https://msdn.microsoft.com/en-us/library/dwb5h52a(v=vs.110).aspx
Count设置为0,并且还释放对集合元素中其他对象的引用。 容量保持不变。若要重置列表的容量,请调用TrimExcess方法或直接设置Capacity属性。减少容量会重新分配内存并复制列表中的所有元素。修剪一个空的列表会将列表的容量设置为默认容量。
因此,您要么将其强制转换为List
,要么必须同意这是正常行为这一事实。