У меня есть метод рекурсии, который установит идентификатор узла, используя какой-то индекс, я царапаю свою голову, так как он продолжает жаловаться, что у меня есть дубликаты идентификаторов.C# Recursion Duplicate Id
Я уверен, что целочисленный тип передается по значению, поэтому я не уверен, что здесь не так.
IList<DocumentNode> contents = new List<DocumentNode>();
int index = 0;
LoadContents(null, index++, result, contents);
private void LoadContents(DocumentNodeparentNode, int nodeId, WordContent wordContent, IList<DocumentNode> contents)
{
foreach (OtheClassContent childContent in wordContent.ChildrenContent)
{
var node = new DocumentNodeViewModel(nodeId,
parentNode?.NodeId,
childContent.SortOrder,
childContent.Depth);
contents.Add(node);
nodeId++;
LoadContents(node, nodeId, childContent, contents);
}
}
// This line wont work
IDictionary<int, int?> myDictionary = contents.ToDictionary(a => a.Id, a => a.ParentId);
Узел документа является структурой узла простого дерева
public class DocumentNode
{
public DocumentNode(
int nodeId,
int? parentNodeId,
short sortOrder,
short branchLevel)
{
NodeId = nodeId;
SortOrder = sortOrder;
BranchLevel = branchLevel;
ParentNode = null;
ParentNodeId = parentNodeId;
ChildNodes = Enumerable.Empty<DocumentNode>();
}
public int NodeId { get; private set; }
public int? ParentNodeId { get; private set; }
public short SortOrder { get; private set; }
public DocumentNode ParentNode { get; set; }
public IEnumerable<DocumentNode> ChildNodes { get; set; }
public short BranchLevel { get; private set; }
}
Кто-нибудь знает, что я делаю неправильно?
Пример: вы создаете узел с 'nodeID' = 3 и увеличиваете до 4. Затем повторяется ive вызов создает узлы 4,5,6. Но обратно в исходный 'nodeID' все еще 4. Петля продолжается, и вы создаете узел 4, но он уже создан. Проблема решена, если вы передаете 'nodeID'' ref'. –