我的字典有一个RegistryKey键。

我似乎无法为该特定键设置值。无论我做什么,我都会得到KeyNotFoundException。该键确实存在,我早先创建了它

例如:

public Dictionary<RegistryKey, Dictionary<string, object>> subKeyNodes = new...
subKeyNodes.Add(mainKeyNode.CreateSubKey(keyName),new Dictionary<string, object>());
subKeyNodes[mainKeyNode.CreateSubKey(keyName)].Add("ROAR", "value");


添加工作正常。使用该键值添加总是失败,而且我似乎无法弄清楚。

最佳答案

RegistryKey既没有GetHashCode也没有Equals替代。这意味着RegistryKey的实例将使用默认实现(在Object中定义)。因此,即使RegistryKey的两个字段相同,也不会将其标识为“相等”。这意味着您不能将此类的实例用作基于散列的集合(例如DictionaryHashSet)的键。

解决方法是,您可以定义另一个包装RegistryKey的类并定义这些方法替代。

09-12 06:28