调用List <T> .Clear()导致IndexOutOfRangeException

sta*_*tch 8 .net c# nhibernate

我有一个List<T>在通过NHibernate填充的实体类中.当我打电话.Clear()给那个名单时,我得到了一个IndexOutOfRangeException.

在调用此列表之前,我已经验证该列表中有项目,但会抛出相同的异常.

在调用此方法时,您希望在什么情况下获得此异常?

private readonly List<VacancyTag> _vacancyTags = new List<VacancyTag>();

public virtual void RemoveAllVacancyTags()
{
    _vacancyTags.Clear();
}
Run Code Online (Sandbox Code Playgroud)

编辑:

疯狂的是,即使抛出异常并且我打破了调试器,我也可以在即时窗口中查询对象并确认Count()方法返回值5!

ken*_*n2k 7

典型情况是您有多个线程访问同一列表.

如果一个线程在另一个线程清除列表时删除了一个项目,则可能抛出此异常.

请记住,List<T>该类不是线程安全的.