c#返回字典时返回函数不存在的值

时间:2010-03-16 15:28:09

标签: c#

我有一个有趣的问题,这是一个返回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>的函数网上找到的示例按预期工作。

2 个答案:

答案 0 :(得分:2)

两件事,

首先,不要使用新的空实例初始化Myset。首选方法是分配方法调用的结果。

var Myset = CacheConverter.MakeDictionary(_myList);

其次,您在发布模式下运行的可能性非常大。通常,编译器将删除任何未使用的代码。

答案 1 :(得分:1)

作为一个附带问题,为什么要创建新的Dictionary<String,HashSet<String>>然后丢弃它?

无论如何,你的代码应该没问题 - 我怀疑它是调试器中正在播放的东西。当你使用相关方法时,手表只能看到变量,因为它是一个局部变量。

暂时离开调试器,代码是否按预期运行