Tôi có một số List<T>
nằm trong một lớp thực thể đang được điền thông qua NHibernate. Khi tôi gọi .Clear()
trong danh sách đó, tôi nhận được số IndexOutOfRangeException
.Danh sách gọi <T> .Clear() gây ra IndexOutOfRangeException
Tôi đã xác minh rằng danh sách đó có các mục trong trước khi được gọi, nhưng ngoại lệ tương tự cũng được ném.
Trong trường hợp nào bạn mong đợi nhận ngoại lệ này khi bạn gọi phương thức này?
private readonly List<VacancyTag> _vacancyTags = new List<VacancyTag>();
public virtual void RemoveAllVacancyTags()
{
_vacancyTags.Clear();
}
Edit:
Điều điên là ngay cả sau khi ngoại lệ được ném và tôi phá vỡ các chương trình gỡ rối, tôi có thể truy vấn các đối tượng trong cửa sổ ngay lập tức và có thể khẳng định rằng phương pháp Count() đang trở lại giá trị 5!
Có thể trùng lặp http://stackoverflow.com/questions/1429562/problem-with-clearing-a-listt trong trường hợp xảy ra sự cố đa luồng. – Alex
là bộ sưu tập có ném ngoại lệ hoặc NHibernate? – Jaguar
Nó không phải là NHibernate ném ngoại lệ. Nhìn qua các thuộc tính Ngoại lệ, không có đề cập đến nó. – starskythehutch