在c#中使用tree时,对象引用没有设置为对象的实例

本文关键字:设置 对象 实例 对象引用 tree | 更新日期: 2023-09-27 18:05:36

我使用了一个将字符串保存为字符串数组的函数但是visual 2012显示了这个错误对象引用未设置为对象的实例。

这是我的代码:

 public void ShowLinkList(ref TreeNode t, ref string[] Data, ref int i)
   {
       string str;
       if (t!= null)
       {
           ShowLinkList(ref t.LeftChild, ref Data, ref i);
           Data[i] = CreatStr(t.Parent.Word) + "," + CreatStr(t.LeftChild.Word )+ "," + CreatStr(t.RightChild.Word) + "," + CreatStr(t.Word);
           i++;
           ShowLinkList(ref t.RightChild, ref Data, ref i);
       }
   }
   public string CreatStr(string str)
   {
       if (str == "")
       {
           return "__";
       }
       return str;
   }

当t为null时,"if(t != null)"不允许编译器调试, CreatStr(string)将输出中的空字符串转换为"__"(windows窗体c#)这个方法(ShowLinkList)保存。parent.word &t.leftchild.word,t.rightchild.word,在字符串数组中请帮帮我。谢谢你

在c#中使用tree时,对象引用没有设置为对象的实例

首先,""等于string.Empty等于null

对于t的任何属性都没有错误处理,所以如果这些属性都是null,那么它就不会知道Word是什么,我建议至少在TreeNode上创建以下方法

public bool HasValidBranches()
{
    return Parent != null && LeftChild != null && RightChild != null;
}

然后将此添加到已经存在的错误处理中,并可以随意修改以满足您的需要

if(t != null && t.HasValidBranches())
....

注意:您总是可以直接将额外的null检查添加到当前代码中。