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

C# 检测空变量后应用程序崩溃,c#,winforms,C#,Winforms,我有一个TreeView,我想在那里获得NextNode,所以我做的很简单,比如: var nextNode = e.Node.NextNode.Text; 如果它有nextNode,则返回正确的值。如果它为空,则会出现问题,应用程序会崩溃并抛出 System.NullReferenceException:'对象引用未设置为 对象的实例。” System.Windows.Forms.TreeNode.NextNode.get返回空值 为什么应用程序崩溃?不应返回空变量,而应返回应用程序崩溃?似

我有一个
TreeView
,我想在那里获得
NextNode
,所以我做的很简单,比如:

var nextNode = e.Node.NextNode.Text;
如果它有nextNode,则返回正确的值。如果它为空,则会出现问题,应用程序会崩溃并抛出

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

System.Windows.Forms.TreeNode.NextNode.get返回空值


为什么应用程序崩溃?不应返回空变量,而应返回应用程序崩溃?

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

您有两个选择:

  • 检索
    NextNode
    对象并检查空值
  • 使用null合并运算符访问文本或替换文本
  • 1-检查是否为空 2-零合并算子
    他们都会做同样的事情。如果
    NextNode
    为空,则变量
    thetext
    将包含空字符串,否则它将包含
    NextNode
    Text

    如果NextNode为空,则不能使用Text属性。先检查一下。
    NextNode node = e.Node.NextNode;
    string thetext = string.Empty;
    if (node != null)
        thetext = node.Text
    
    string thetext = e.Node?.NextNode?.Text ?? string.Empty;