凡Sessions
是Dictionary<Guid, WebSession>
,並NewSession
是new WebSession()
我有這樣一行:的NullReferenceException添加到字典 - 非常肯定的是,沒有什麼是空
Sessions.Add(NewSession.SessionID, NewSession);
現在,在這一點上,你可能滾動你的眼球和思維「或者會話爲空,或者NewSession.SessionID爲空。」然而:
Sessions == null
false
NewSession.SessionID == null
false
NewSession == null
false
它是非常間歇的。在50中可能會發生一次。並且,只要發生,我可以在即時窗口中執行Sessions.Add(NewSession.SessionID, NewSession);
並且它工作正常。
WebSession
的構造函數是同步的,Sessions
是一個沒有加糖的香草字典。
我很確定我已經在這一點上做了盡職調查。在我的應用程序中發生的事情已經沒有任何危害,並且它被困住並處理得很乾淨 - 但我首先想不通的原因。
編輯:我不知道是否是因爲我WebSession
繼承: Dictionary<String, Object>
但其構造不會調用base()
- 這仍然不會是解釋它,因爲我可以檢查的對象不是空做Add(..)
可能的重複[什麼是.NET中的NullReferenceException?](http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-in-net) – 2013-03-03 19:10:45
顯示堆棧跟蹤怎麼樣?通常這會揭開一切... – 2013-03-03 19:11:35
用消息添加一些斷言,以便該消息告訴你什麼是空。 – usr 2013-03-03 19:11:39