在if语句中避免NullReferenceException?

时间:2013-08-21 13:38:44

标签: c# unity3d nullreferenceexception

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

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

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

这是if语句,

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

        }

3 个答案:

答案 0 :(得分:1)

String myValue= null

if(myValue != null && myValue.equal("value"))
{
 //Do something
}

答案 1 :(得分:0)

您可以编写条件,以便检查对象是否为空

例如

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

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

答案 2 :(得分:0)

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

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

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