gpt4 book ai didi

c# - .NET List.Find 运行时错误

转载 作者:行者123 更新时间:2023-11-30 21:12:46 28 4
gpt4 key购买 nike

我正在构建一个自定义数据结构来保存 TreeView,以便我可以对其进行序列化。这一点无关紧要,是背景,但我把它放在这里。

我有一个 CustomNode 类, TreeView 将保存在 List<CustomNode> 中:

private class CustomNode
{
public CustomNode()
{}

public CustomNode (string name)
{
NodeName = name;
}
public string NodeName { get; set; }
public int Level { get; set; }
public int Index { get; set; }
public CustomNode parent;
public List<CustomNode> children;
}

这是我要解决的相关问题。在我的代码中,我想找到特定 CustomNode 的父级,所以我这样做:

   CustomNode customNode = new CustomNode();
//initialise properties of customNode (below)
.
.
.
CustomNode customNodeParent = new CustomNode();
customNodeParent = listOfCustomNodes.Find(_customNode => (_customNode.Index == node.Index && _customNode.Level == node.Level));
customNode.Index = customNodeParent.children.Count;

最后一行抛出一个未设置对象实例的对象引用异常。我不明白为什么会这样。

编辑:还有另一个问题。在我打电话的地方:

customNode.Index = customNodeParent.children.Count;

customNodeParent 为空。我明白发生了什么事。它没有找到节点。需要解决这个问题。

最佳答案

在您的 CustomNode 声明中, 改变

public List<CustomNode> children;

public List<CustomNode> children = new List<CustomNode>();

在您当前的代码中,您说的是“CustomNode 有一个名为 children 的字段,其类型为 List<CustomNode>”,但是该字段的 value 永远不会被设置,所以当一个CustomNode已创建,childrennull .

通过进行上述更改,您是在说“第一次创建时,CustomNodechildren 是一个实际对象,一个新的 List<CustomNode>”。因为这是一个实际对象,而不是 null , 可以安全地询问它的 Count .

关于c# - .NET List.Find 运行时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7258566/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com