检测到空变量后应用程序崩溃

时间:2018-10-04 23:12:21

标签: c# winforms

我有一个TreeView,我想在那里拿到NextNode,所以我做的很简单:

var nextNode = e.Node.NextNode.Text;

如果具有nextNode,则返回正确的值。如果问题为null,则应用程序崩溃并抛出

  

System.NullReferenceException:'对象引用未设置为   对象的实例。'

     

System.Windows.Forms.TreeNode.NextNode.get返回null。

为什么应用程序崩溃?应该不返回null变量,而是应用程序崩溃了?

1 个答案:

答案 0 :(得分:3)

似乎NextNode的实例不存在,但是您尝试访问Text属性。

您有两个选择:

  1. 获取NextNode对象并检查NULL
  2. 使用空合并运算符访问或替换文本。

1-检查是否为空

NextNode node = e.Node.NextNode;
string thetext = string.Empty;
if (node != null)
    thetext = node.Text

2-空合并运算符

string thetext = e.Node?.NextNode?.Text ?? string.Empty;

他们都会做同样的事情。如果NextNode为null,则变量thetext将包含一个空字符串,否则它将包含Text中的NextNode