字典元素参考

时间:2017-02-05 11:02:15

标签: c# .net visual-studio

我正在处理字典以及它们彼此引用的最大问题。我需要创建一个深度克隆(像这样的smth命名)。

我使用 population 作为我存储图形的初始字典,然后我需要从 Population 中获取元素,更改它们,写入 childPopulation 然后一些计算和更改的元素变为分数。 Finnaly我需要合并 population score 词典。

问题在于,当我从 population 更改元素时,它们会因此而改变。我需要一些如何创建 population 的副本,而这些副本将不会被初始化引用。

        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>>>();
        }

0 个答案:

没有答案