đâu Sessions
là một Dictionary<Guid, WebSession>
, và NewSession
là new WebSession()
Tôi có dòng này:NullReferenceException thêm vào một từ điển - rất chắc chắn rằng không có gì là null
Sessions.Add(NewSession.SessionID, NewSession);
Bây giờ vào thời điểm này có lẽ bạn đang lăn nhãn cầu và suy nghĩ của bạn "một trong hai phiên là null, hoặc NewSession.SessionID là null." Tuy nhiên:
Sessions == null
false
NewSession.SessionID == null
false
NewSession == null
false
Nó khá liên tục. Xảy ra có thể một lần trong 50. Và bất cứ khi nào nó xảy ra, tôi chỉ có thể làm Sessions.Add(NewSession.SessionID, NewSession);
trong cửa sổ ngay lập tức và nó hoạt động tốt.
Hàm tạo cho WebSession
là đồng bộ và Sessions
là từ điển vanilla không thêm đường.
Tôi chắc chắn tôi đã thực hiện thẩm định tại thời điểm này. Đó là một điều vô hại đủ để xảy ra trong ứng dụng của tôi và nó bị mắc kẹt và được xử lý một cách sạch sẽ - nhưng tôi bị bối rối như những gì gây ra nó ở nơi đầu tiên.
Edit: Tôi tự hỏi nếu đó là vì tôi WebSession
thừa hưởng : Dictionary<String, Object>
nhưng constructor của nó không gọi base()
- mà vẫn không giải thích nó mặc dù kể từ khi tôi có thể kiểm tra các đối tượng không phải là null trước khi làm Add(..)
có thể trùng lặp của [Ngoại lệ NullReferenceException trong .NET là gì?] (Http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-in-net) –
điều gì về việc hiển thị ngăn xếp dấu vết? thông thường điều này sẽ tiết lộ mọi thứ ... –
Thêm một số lời khẳng định với các tin nhắn để thông báo cho bạn biết chính xác những gì là null. – usr