このコードを実行すると、珍しいヌル参照が発生します。mscorlib.dllの珍しいNullReferenceException
クリアするだけで、null参照が何であるかわかります。このメソッドで使用される値は、実行時に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 -it) – john
a)HashSetが必要なようです。 b)valがnullであるか、valの値がnullで、そのnull値を使用しようとしているカスタムの比較対象があります。 – john
@john:そうではありません。 OPは彼がこの例外に未知であるようには見えない。彼が考えることができないのは、これが起こっているところです。 –