我正在使用C#并具有以下功能:
public static Dictionary<string, string> GetData(string fileName)
{
Dictionary<string, string> returnDictionary = new Dictionary<string,string>();
.... Load data from file into dictionary........
return returnDictionary;
}
使用返回字典的正确方法是什么:
public class WhateverClass
{
Dictionary <string, string> classDictionary = new Dictionary<string,string>();
... Class code....
public void WhateverFunction ()
{
...
// SHALL I USE
classDictionary = GetData(filename);
...
// OR
classDictionary = new Dictionary<string,string>(GetData(filename));
}
}
应该正确使用返回的字典,将其复制到我班级已经创建的字典中。
答案 0 :(得分:4)
你不需要重建字典,现有的参考资料就足够了。
C#使用基于引用计数的垃圾收集器。通过返回(并指定返回值)字典,可以添加引用计数。在该引用(以及所有其他引用)超出范围之前,您可以毫无后顾之忧地使用字典。
当然,如果没有引用,首先应该很难使用字典:)。
您实际上很少需要执行深层复制,而您发布的代码似乎无法在此处保证。
答案 1 :(得分:4)
我会考虑根据用法删除你的类级别变量。正确地填写字典。
如果您要在不同的方法调用中不断地编写类字典,那么它可能不应该是类级变量。
至于生成字典,不需要调用classDictionary = new Dictionary<string,string>(GetData(filename));
,因为您的方法已经创建了一个新字典。基本上你是在创建一个新词典,然后复制它并扔掉你所做的。
只需使用classDictionary = GetData(filename);