在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,在字符串数组中请帮帮我。谢谢你
首先,""
等于string.Empty
且不等于null
对于t的任何属性都没有错误处理,所以如果这些属性都是null,那么它就不会知道Word
是什么,我建议至少在TreeNode
上创建以下方法
public bool HasValidBranches()
{
return Parent != null && LeftChild != null && RightChild != null;
}
然后将此添加到已经存在的错误处理中,并可以随意修改以满足您的需要
if(t != null && t.HasValidBranches())
....
注意:您总是可以直接将额外的null检查添加到当前代码中。