【发布时间】:2016-10-28 07:22:58
【问题描述】:
这里的节点是<string, List<string>>的字典
并且 childnodes 是 List<string> 而 parentnode 是一个字符串。
每当我清除子节点时,节点中所有键的值都会被清除。
public void processData()
{
var hcols = Input.Columns.Take(Input.Columns.Count).ToList();
var childNodes = new List<string>();
var parentNode = "Default";
for (var i= 1 ; i < hcols.Count -1 ; i++)
{
var splitString = hcols[i].Name.Split('_');
if (nodes.ContainsKey(splitString[0]))
{
childNodes.Add(splitString[1]);
}
else
{
var childNodes2 = childNodes;
if (!nodes.ContainsKey(splitString[0]) && childNodes.Count > 0)
{
nodes[parentNode] = childNodes2;
}
nodes.Add(splitString[0], null);
parentNode = splitString[0];
childNodes.Clear();
if (splitString.Length > 1) childNodes.Add(splitString[1]);
}
Array.Clear(splitString, 0, splitString.Length);
}
nodes[parentNode] = childNodes;
}
【问题讨论】:
-
你的问题是什么?
-
你只能创建一个
List<string>。这个对象是一个引用类型。正在为每个键添加相同的列表。您需要为每个键创建一个单独的列表,否则您将获得您所描述的行为。
标签: c# dictionary data-structures