复制函数返回的字典的正确方法
本文关键字:方法 字典 返回 复制 函数 | 更新日期: 2023-09-27 18:00:16
我正在使用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));
}
}
应该如何正确使用返回的字典,将其复制到我类中已经创建的字典中。
我会考虑根据使用情况去掉类级别的变量。正确地确定词典的范围。
如果您要在不同的方法调用中不断地编写类字典,那么它可能不应该是类级变量。
至于生成字典,不需要调用classDictionary = new Dictionary<string,string>(GetData(filename));
,因为您的方法已经创建了一个新的字典。从本质上讲,你是在创建一本新字典,然后复制它,扔掉你制作的东西。
只需使用classDictionary = GetData(filename);
您不需要重建字典,现有的引用就足够了。
C#使用基于引用计数的垃圾收集器。通过返回(并指定返回值)字典,可以添加到引用计数中。在该引用(以及所有其他引用)超出范围之前,您可以不用担心地使用该词典。
当然,如果没有参考文献,首先很难使用字典:)。
你很少真正需要执行深度复制,而且你发布的代码似乎不足以保证这一点。