unity中 c# if 判断中的 null

本文探讨了在Unity中,对于继承自UnityEngine.Object的类与普通C#类如何进行null判断的区别。Unity中,针对UnityEngine.Object的子类可以直接使用if(clssInstance)进行判断,因为它们实现了对bool的隐式转换。而其他C#类则需要使用if(clssInstance != null)。此外,使用Unity的隐式转换可能会导致额外的性能开销,尤其是在进行相等性检查时,因为这会检查底层引擎对象是否已被销毁。虽然这种优化可以减少一些开销,但在大多数情况下并不显著,通常不需要特别关注。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

从c++ 转过来的,对于某个类的空判断一直习惯用
if(clssInstance) 或者 if (!clssInstance) ,
转过来Unity 发现 有些类可以if(clssInstance) 但是有些类只能if(clssInstance != null),
最近了解才知:
继承UnityEngine.Object的类才能if(clssInstance),因为UnityEngine.Object实现了对bool的隐式转换

public static implicit operator bool(Object exists) => !Object.CompareBaseObjects(exists
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值