开发者

c# Return value of function non-existent, when returning a dictionary

I have an interesting problem, which is a function that returns a Dictionary<String,HashSet<String>>.

The function converts some primitive structs to a Dictionary Class.

The function is called as follows:

Dictionary<String, HashSet<String>> Myset = new Dictionary<String,HashSet<String>>();
Myset = CacheConverter.MakeDictionary(_myList);

Upon execution of the two lines above, Myset is non-existent to the debugger. Adding a watch results in:

"The name 'Myset' does not exist in the current context"

public Dictionary<String, HashSet<String>> MakeDictionary(LightWeightFetchListCollection _FetchList) 
{
    Dictionary<String, HashSet<String>> _temp = new Dictionary<String, HashSet<String>>();
    // populate the Dictionary
    // return
    return _temp;    
}

The Dictionary _temp is correctly populated by the called function and _temp contains all the expected values.

The problem seems to be with the dictionary not being returned at all.

Examples I 开发者_运维问答could find on the web of functions returning primitive Dictionary<string,string> work as expected.


Two things,

First, don't initialize the Myset with a new empty instance. The preferred way is to assign the result of the method call.

var Myset = CacheConverter.MakeDictionary(_myList);

Second, the odds are very strong that you are running in release mode. Typically the compiler will remove any code that is not being used.


Just as a side question, why are you creating a new Dictionary<String,HashSet<String>> and then discarding it?

Anyway, your code should be fine - I suspect it's something in the debugger that's playing up. The watch would only be able to see the variable when you're in the relevant method of course, given that it's a local variable.

Leaving the debugger aside from the moment, does the code actually run as expected?

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜