C# 未设置捕获错误对象引用的干净方法

C# 未设置捕获错误对象引用的干净方法,c#,object-reference,C#,Object Reference,当DeliveryMethodComboBox没有selectedItem时 对象引用未设置为对象的实例 出现错误 解决这个问题的最好办法是什么? 在这个例子中,我添加了一个try-and-catch try { DeliveryMethodLabel2.Text = DeliveryMethodComboBox.SelectedItem.ToString(); } catch { DeliveryMethodLabel2.Text = ""; } 我假设你的意思是这个值为空

当DeliveryMethodComboBox没有selectedItem时

对象引用未设置为对象的实例

出现错误

解决这个问题的最好办法是什么? 在这个例子中,我添加了一个try-and-catch

try
{
    DeliveryMethodLabel2.Text = DeliveryMethodComboBox.SelectedItem.ToString();
}
catch 
{
    DeliveryMethodLabel2.Text = "";
}

我假设你的意思是这个值为空

**假设列表中没有空值,并且只关心是否有选择

if(DeliveryMethodComboBox.SelectedIndex != -1)
{
    DeliveryMethodLabel2.Text = DeliveryMethodComboBox.SelectedItem.ToString();
}
else
{
    DeliveryMethodLabel2.Text = "";
}
否则,如果DeliverMethodComboBox可以为null,只需将if更改为

if(DeliveryMethodComboBox != null && DeliveryMethodComboBox.SelectedIndex != -1)

NullReferenceException
是初学者的常见情况。提供的链接应有助于您了解问题。然后使用调试器查找变量为
null
的内容/位置/时间。最好的方法是实际检查是否已选择某个项。不要为类似的事情使用
try/catch
块。将异常视为不同于错误。当我与初学者程序员交谈时,我告诉他们将异常视为“他们从未见过的事情”。因此,例如,有人没有在下拉列表中进行选择—您应该预料到这一点。这是很平常的事,它会发生的。这使它成为一个错误,而不是一个例外。系统内存不足,这是个例外。这不是我们期望正常发生的事情。我希望这有助于澄清一点。@Dirk我不需要检查是否选择了某个项目,我需要知道selectedItem是否为空。但是谢谢你@dman2306你的意思是,当你知道可能有错误时,千万不要接球。谢谢