正确复制函数返回的字典的方法

时间:2014-04-25 17:52:44

标签: c# dictionary

我正在使用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));
     }
}

应该正确使用返回的字典,将其复制到我班级已经创建的字典中。

2 个答案:

答案 0 :(得分:4)

你不需要重建字典,现有的参考资料就足够了。

C#使用基于引用计数的垃圾收集器。通过返回(并指定返回值)字典,可以添加引用计数。在该引用(以及所有其他引用)超出范围之前,您可以毫无后顾之忧地使用字典。

当然,如果没有引用,首先应该很难使用字典:)。

您实际上很少需要执行深层复制,而您发布的代码似乎无法在此处保证。

答案 1 :(得分:4)

我会考虑根据用法删除你的类级别变量。正确地填写字典。

如果您要在不同的方法调用中不断地编写类字典,那么它可能不应该是类级变量。

至于生成字典,不需要调用classDictionary = new Dictionary<string,string>(GetData(filename));,因为您的方法已经创建了一个新字典。基本上你是在创建一个新词典,然后复制它并扔掉你所做的。

只需使用classDictionary = GetData(filename);

即可