-1
ここのノードは<string, List<string>>
の辞書で、childnodesはList<string>
で、parentnodeは文字列です。 子ノードをクリアするたびに、ノード内のすべてのキーの値がクリアされます。辞書[key] =値は参照型ですか?
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'を1つしか作成しません。このオブジェクトは参照型です。すべてのキーに対して同じリストが追加されています。それぞれのキーごとに別々のリストを作成する必要があります。そうしないと、説明した動作が発生します。 –
Baldrick