今天,我在Unity项目中遇到了一些有趣的C#代码:
MyScript ms = new MyScript(); //MyScript derives from MonoBehaviour
ms = null;
if(!ms) { Debug.Log("ms = "+(ms==null)); }
它的行为似乎与以下内容相同:
if(ms == null) { /*Do Stuff*/ }
但这真的是同一回事吗?我还没有找到关于此的任何文档。是否有理由不使用较短的版本,或者不喜欢较短的版本?
答案 0 :(得分:6)
不。您可以使用Javascript来做到这一点,但是C#不能这样工作,除非myobject
实际上是布尔值。
基于此评论:
myobject ...源自MonoBehaviour。
以及MonoBehavior docs的摘录:
Operators bool Does the object exist? operator != Compares if two objects refer to a different object.
您似乎可以对变量执行此操作,因为它可以隐式转换为bool
。但是对于C#来说通常不行。