我有一个 List<T>
它位于通过 NHibernate 填充的实体类中。当我调用 .Clear()
在那个列表上,我得到一个 IndexOutOfRangeException
.
我已验证该列表在调用之前在 in 中有项目,但抛出相同的异常。
您希望在什么情况下调用此方法时得到此异常?
private readonly List<VacancyTag> _vacancyTags = new List<VacancyTag>();
public virtual void RemoveAllVacancyTags()
{
_vacancyTags.Clear();
}
编辑:
疯狂的是,即使抛出异常并且我破坏了调试器,我仍然可以在即时窗口中查询对象并可以确认 Count() 方法返回值 5!
最佳答案
一个典型的情况是当您有多个线程访问同一个列表时。
如果一个线程删除了一个项目,而另一个线程正在清除列表,则可能会抛出此异常。
记住 List<T>
类不是线程安全的。
关于c# - 调用 List<T>.Clear() 导致 IndexOutOfRangeException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9393371/