为什么规范要求写null==obj而不是obj==null
时间: 2023-10-01 18:11:28 浏览: 64
规范要求写`null==obj`而不是`obj==null`是因为在一些语言中,比如Java,使用`=`符号进行赋值时,如果不小心将`==`写成了`=`, 就会导致程序出现逻辑错误。而将`null`放在前面,就能够避免这个问题,因为如果不小心将`=`写成了`==`,编译器会提示错误。此外,将`null`放在前面也可以让代码更加易读,因为`null`是一个常量,而变量通常是排在前面的。
相关问题
为什么要写成null==obj
将`null`放在表达式的左侧,例如`null==obj`,是一种编程习惯,被称为“Yoda 表达式风格”(Yoda Conditions)。这种风格得名于星球大战中的 Yoda 角色,因为他的语言特点是将谓语放在主语之后,例如“Powerful you have become, the dark side I sense in you”(你变得强大了,我感受到你身上的黑暗面)。Yoda 表达式风格也是将常量或字面量放在表达式的左侧,而将变量放在右侧。
使用`null==obj`这种写法的好处是,如果不小心将`==`写成了`=`,例如`null=obj`,编译器会提示错误,因为不能将值赋给常量。而如果使用`obj==null`这种写法,将`==`写成`=`时,编译器不会报错,而是将`null`赋值给`obj`,可能会导致程序出现逻辑错误。因此,使用`null==obj`这种写法可以减少编程错误的发生,提高代码的可读性和可维护性。
为什么obj.GetComponent<Text>() == null
如果 `obj.GetComponent<Text>()` 返回 `null`,这意味着在 `obj` 的组件列表中没有找到 `Text` 组件。
有几种可能的原因:
1. 对象 `obj` 上没有挂载 `Text` 组件:确保你在 `obj` 上挂载了 `Text` 组件。你可以在 Unity 编辑器中检查 `obj` 上是否有 `Text` 组件,并确保它是激活状态。
2. 组件的访问权限:确保你正在尝试获取的 `Text` 组件在 `obj` 上是可访问的。如果 `Text` 组件在子对象上而不是 `obj` 本身上,你需要使用 `GetComponentInChildren<Text>()` 方法来获取子对象上的组件。
3. 组件名称错误:检查你正在使用的组件名称是否与实际的组件名称匹配。确保你正在使用的是正确的组件类名,大小写敏感。
如果以上步骤都正确,并且仍然返回 `null`,则可能存在其他问题,比如脚本未正确挂载、对象未激活等。在这种情况下,可以尝试使用调试工具来进一步检查问题所在。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)