作者:独斟自饮醉 | 来源:互联网 | 2022-12-06 10:48
今天我在Unity项目中遇到了一些有趣的C#代码:
MyScript ms = new MyScript(); //MyScript derives from MonoBehaviour
ms = null;
if(!ms) { Debug.Log("ms = "+(ms==null)); }
它看起来似乎表现如下:
if(ms == null) { /*Do Stuff*/ }
但它真的是一回事吗?我还没有找到任何关于此的文档.有没有理由不使用较短的版本或更喜欢一个?
1> Joel Coehoor..:
不可以.您可以在Javascript中执行此操作,但C#不会像那样工作,除非myobject
实际上是布尔值.
根据这个评论:
myobject ......来自MonoBehaviour.
以及MonoBehavior文档的摘录:
Operators
bool Does the object exist?
operator != Compares if two objects refer to a different object.
看起来你可以为你的变量做这个,因为它可以隐式转换为bool
.但是对于C#来说通常都没有问题.
...或者定义了隐式运算符
定义@CamiloTerevinto或`true` /`false`运算符,它与隐式转换运算符**不同**
@Neph这不是魔术,只是开发Unity的人非常喜欢Javascript.只需在脚本中默认查看类似Javascript的间距...