2017-05-15 73 views
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); 

行發生錯誤。當我在那一點上休息時,dictval都不爲空,並且都有它們的期望值。

此代碼用來工作,後來才知道是遠離它的幾個星期,回來時發現它失敗。我想知道如果一些Windows或Visual Studio的更新可以打破這個?

+1

的可能的複製[什麼是一個NullReferenceException,如何解決呢?(http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix - 它) – john

+4

a)它看起來像你想要一個HashSet。 b)val爲null或val的值爲null,並且您有一個正在嘗試使用該空值的自定義比較器。 – john

+0

@john:情況並非如此。 OP看起來並不像他對這個例外是未知的。他無法想到的是這發生的地方。 –

回答

2

仍然不知道是什麼的問題是,但我已經通過重新安裝.NET和我的許多視覺工作室部件和包裝的,現在修好了。