C# 字典元素引用
我在使用字典,最主要的问题是它们相互引用。我需要创建一个深层克隆(命名为smth) 我使用人口作为初始字典,在这里存储图形,然后我需要从人口中提取元素,更改它们,写入childPopulation,然后进行一些计算,更改后的元素变成分数。最后,我需要合并人口和分数字典 问题是,当我改变人口中的元素时,它们会因为原因而改变。我需要一些如何创建一个人口的副本,而我将不会引用初始值C# 字典元素引用,c#,.net,visual-studio,C#,.net,Visual Studio,我在使用字典,最主要的问题是它们相互引用。我需要创建一个深层克隆(命名为smth) 我使用人口作为初始字典,在这里存储图形,然后我需要从人口中提取元素,更改它们,写入childPopulation,然后进行一些计算,更改后的元素变成分数。最后,我需要合并人口和分数字典 问题是,当我改变人口中的元素时,它们会因为原因而改变。我需要一些如何创建一个人口的副本,而我将不会引用初始值 population = new Dictionary<AdjacencyGraph<Fig
population = new Dictionary<AdjacencyGraph<Figure, TaggedEdge<Figure, double>>, double>();
addElement(p1, initialGraph);
Run(initialGraph, p1);
double scoreBest = RMSECalc();
population.Add(initialGraph, scoreBest);
while (scoreBest >= 1.0)
{
childPopulation = new List<AdjacencyGraph<Figure, TaggedEdge<Figure, double>>>();
var parentList = new Dictionary<AdjacencyGraph<Figure, TaggedEdge<Figure, double>>, double>();
foreach (var parent in population)
{
childPopulation.Add(Mutate(parent.Key));
}
GetBestSolution(childPopulation);
scores = scores.OrderBy(x => x.Value).ToDictionary(x => x.Key, x => x.Value);
if (scores.First().Value < scoreBest)
scoreBest = scores.First().Value;
scores.ToList().ForEach(x => population.Add(x.Key, x.Value));
population.Take(50);
scores = new Dictionary<AdjacencyGraph<Figure, TaggedEdge<Figure, double>>, double>();
childPopulation = new List<AdjacencyGraph<Figure, TaggedEdge<Figure, double>>>();
}
population=newdictionary();
加法器(p1,初始图形);
运行(初始化图,p1);
double scoreBest=RMSECalc();
人口。添加(初始值图表,最佳分数);
而(最佳得分>=1.0)
{
childPopulation=新列表();
var parentList=新字典();
foreach(总体中的父变量)
{
Add(Mutate(parent.Key));
}
GetBestSolution(儿童人口);
分数=分数.OrderBy(x=>x.Value).ToDictionary(x=>x.Key,x=>x.Value);
if(scores.First().Valuepopulation.Add(x.Key,x.Value));
人口:以50人为例;
分数=新字典();
childPopulation=新列表();
}
您是否考虑过使用结构而不是引用类型?执行深度克隆的一个选项是执行二进制序列化和反序列化。否则,您必须编写自己的代码来进行克隆。问题是我不能使用序列化,因为邻接图没有提到可序列化。而且我也无法修复源代码。同我不能使用接口IClonable一样