1

一般来说,我对编程比较陌生,我正在学习 C# 并在 Unity3D 中使用它进行游戏开发,我有一个问题,如果可能,当询问变量是否等于时,如何在 if 语句中避免 NullReferenceExceptions当变量为空时的东西。

我有这个 if 语句,它检查光线投射命中的游戏对象是否等于某个名称,如果你要压入天空盒的空白,该对象当然会返回 null,这会导致 NullReferenceException。

我只是想知道,即使它根本不影响任何事情,是否值得尝试避免,这对我来说有点令人不安,XD。

这是 if 语句,

if (Input.GetButtonDown ("Fire1") && rayhit.transform.name == "Reflector") 
        {

        }
4

3 回答 3

1
String myValue= null

if(myValue != null && myValue.equal("value"))
{
 //Do something
}
于 2013-08-21T13:42:07.947 回答
0

你可以写你的条件,以便它首先检查对象是否为空

例子

if(myvar != null && /* your condition */){
    //do stuff
}

/* your condition */如果第一个条件失败,该部分将不会被执行

于 2013-08-21T13:43:02.920 回答
0

我认为你应该尽可能避免例外。它更快,因为异常需要大量处理时间并且更容易阅读代码,至少对我而言,当您使用 if 语句而不是 try-catch 语句时。

对于您的示例,您可以if(skybox != null)在深入研究此equal方法之前执行此操作以避免异常。

在这里,您可以阅读“为什么要避免异常”。它们使您的思维复杂化,使代码复杂化,并使调试成为一场噩梦。

于 2013-08-21T13:44:04.453 回答