2
當我運行這段代碼我得到一個不尋常的空引用。不尋常的NullReferenceException在mscorlib.dll
剛剛放晴,我明白了一個空引用是什麼,沒有了在此方法中使用的值爲null在運行時。空引用似乎在mscorlib中的某處,我一直無法找到任何人報告類似的問題到目前爲止。
特徵與在它10個左右的項的枚舉。
private Dictionary<Feature, bool> dict = new Dictionary<Feature, bool>();
public bool AddFeature(Feature val)
{
if (!dict.ContainsKey(val))
{
dict.Add(val, false);
return true;
}
else
return false;
}
特徵
[Flags]
public enum Feature
{
[Description("Other")]
Other = 0x00000000,
[Description("Analysis")]
Analysis = 0x00000001,
[Description("Campaign")]
Campaign = 0x00000002,
[Description("Trends")]
Trends = 0x00000004,
[Description("Portal")]
Portal = 0x00000008,
[Description("Phone")]
Phone = 0x00000010,
[Description("Rents")]
Rents = 0x00000020,
[Description("Repairs")]
Repairs = 0x00000040,
[Description("Maintenance")]
Maintenance = 0x00000080,
[Description("Management")]
Management = 0x00000100,
[Description("Services")]
Services = 0x00000200,
[Description("All")]
All = 0x7FFFFFFF
}
錯誤是:
類型 'System.NullReferenceException' 的一個例外發生在mscorlib.dll但在用戶代碼中沒有處理
附加信息:未將對象引用設置爲對象的實例。
at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)
at System.Collections.Generic.Dictionary`2.Add(TKey key, TValue value)
at Test.Model.EnabledFeatures.AddFeature(Feature val) in C:\Sandbox\Test\Shared\Model\EnabledFeatures.cs:line 26
我已經通過我的代碼,並加強對
dict.Add(val, false);
行發生錯誤。當我在那一點上休息時,dict
和val
都不爲空,並且都有它們的期望值。
此代碼用來工作,後來才知道是遠離它的幾個星期,回來時發現它失敗。我想知道如果一些Windows或Visual Studio的更新可以打破這個?
的可能的複製[什麼是一個NullReferenceException,如何解決呢?(http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix - 它) – john
a)它看起來像你想要一個HashSet。 b)val爲null或val的值爲null,並且您有一個正在嘗試使用該空值的自定義比較器。 – john
@john:情況並非如此。 OP看起來並不像他對這個例外是未知的。他無法想到的是這發生的地方。 –