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

标签 c# .net nhibernate

我有一个 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/

相关文章:

c# - 将矩形添加到pdfpcell itextsharp中

c# - 使用反射获取嵌套类型的容器类型

c# - 如何指向不同环境的 Entity Framework 数据库上下文

c# - Entity Framework 6 迁移 - 生成 "SchemaName"."TableName"

c# - 如何在每个新页面上自动添加命名空间,控件添加到 VS2008 中的网站?

c# - 单击表单上任何数据 GridView 的保存按钮时提交当前脏单元格

ASP.NET NHibernate 事务持续时间

c# - nHibernate QueryOver 在参数为空时获取所有记录

.net - 解析泛型类型参数的元数据标记

c# - 对象引用未保存的 transient 实例 在刷新之前保存 transient 实例