【问题标题】:Unusual NullReferenceException in mscorlib.dllmscorlib.dll 中的异常 NullReferenceException
【发布时间】:2017-05-15 23:16:42
【问题描述】:

运行此代码时,我得到一个不寻常的空引用。

澄清一下,我了解空引用是什么,此方法中使用的值在运行时都不是空的。空引用似乎在 mscorlib 中的某个地方,到目前为止,我找不到任何人报告类似问题。

Feature 是一个包含 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
}

错误是:

在 mscorlib.dll 中发生了“System.NullReferenceException”类型的异常,但未在用户代码中处理

附加信息:对象引用未设置为对象的实例。

    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 都不是 null 并且都有它们的预期值。

这段代码过去可以工作,然后我离开它几个星期,回来发现它失败了。我想知道某些 Windows 或 Visual Studio 更新是否会破坏这一点?

【问题讨论】:

  • a) 看起来你想要一个 HashSet。 b) val 为 null 或 val 的值为 null 并且您有一个自定义比较器正在尝试使用该 null 值。
  • @john:事实并非如此。 OP 看起来对这个例外并不陌生。他无法思考的是这是从哪里发生的。
  • @CJM:还有其他线程将其设为空吗?
  • “特征”类是你的吗?如果是这样,当添加val 时,Dictionnary 类是否可以使用任何方法?像 GetHashCode 这样的东西?相比?还有什么?

标签: c# .net-4.5


【解决方案1】:

仍然不确定问题出在哪里,但我现在通过重新安装 .net 和我的许多 Visual Studio 组件和包来修复它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-05
    • 1970-01-01
    • 2016-08-20
    • 2018-03-14
    相关资源
    最近更新 更多