我有一个有趣的问题,这是一个返回Dictionary<String,HashSet<String>>
的函数。
该函数将一些基本结构转换为字典类。
该函数调用如下:
Dictionary<String, HashSet<String>> Myset = new Dictionary<String,HashSet<String>>();
Myset = CacheConverter.MakeDictionary(_myList);
执行上面两行后,Myset不存在于调试器中。添加手表会导致:
“'Myset'这个名字不存在于 当前的背景“
public Dictionary<String, HashSet<String>> MakeDictionary(LightWeightFetchListCollection _FetchList)
{
Dictionary<String, HashSet<String>> _temp = new Dictionary<String, HashSet<String>>();
// populate the Dictionary
// return
return _temp;
}
字典_temp
由被调用函数正确填充,_temp
包含所有预期值。
问题似乎是字典根本没有被退回。
我可以在返回原语Dictionary<string,string>
的函数网上找到的示例按预期工作。
答案 0 :(得分:2)
两件事,
首先,不要使用新的空实例初始化Myset
。首选方法是分配方法调用的结果。
var Myset = CacheConverter.MakeDictionary(_myList);
其次,您在发布模式下运行的可能性非常大。通常,编译器将删除任何未使用的代码。
答案 1 :(得分:1)
作为一个附带问题,为什么要创建新的Dictionary<String,HashSet<String>>
然后丢弃它?
无论如何,你的代码应该没问题 - 我怀疑它是调试器中正在播放的东西。当你使用相关方法时,手表只能看到变量,因为它是一个局部变量。
暂时离开调试器,代码是否按预期运行?