2010-03-16 238 views
1

我有一個有趣的問題,這是一個函數,返回Dictionary<String,HashSet<String>>c#函數返回值不存在時,返回字典

該函數將一些基本結構轉換爲Dictionary類。

該函數的調用如下:

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

兩件事情,

首先,不要初始化Myset一個新的空實例。首選的方法是分配方法調用的結果。

var Myset = CacheConverter.MakeDictionary(_myList); 

其次,在發佈模式下運行的機率非常高。通常情況下,編譯器將刪除所有未使用的代碼。

+0

是的,調試器把它從我身上隱藏起來,因爲我沒有在代碼中的任何地方使用Myset。 – twiga 2010-03-16 15:38:50

1

就像一個側面的問題,你爲什麼要創建一個新的Dictionary<String,HashSet<String>>,然後丟棄它?

無論如何,你的代碼應該沒問題 - 我懷疑這是在調試器中正在播放的東西。只有當你使用相關方法時,手錶才能看到變量,因爲它是局部變量。

將調試器暫時擱置一旁,代碼是否按預期運行

+0

嗨喬恩, 是的,它是我的智能調試器!我進一步創建了代碼,以實際打印字典的值,並且它在那裏! 我必須承認,我對C#非常陌生,我在哪裏創建Dictionary >並放棄它? – twiga 2010-03-16 15:37:58

+0

@twiga,如果你將你的評論改爲閱讀@Jon而不是Hi Jon,你可能會有更好的運氣。我認爲它會出現在他的SO電子郵件中。 – 2010-03-16 19:39:43