【Unity踩坑笔记】使用C#合并运算符时应注意Unity字段的假空

我的代码:

    public Transform _targetTrans;
    public Transform targetTrans => _targetTrans ?? (_targetTrans = transform);

代码使用合并运算符判断targetTrans是否为空,但是判断的结果时false,并不会执行??右边的 (_targetTrans = transform)代码。原因是_targetTrans字段是使用public修饰,这使他处于一种假空的状态,虽然用==识别为空,但是使用这个合并运算符就不行了,更深层次的原因咱也不懂,简单记录一下加深一遍印象吧。可以看看这篇文章
改写为:

    public Transform _targetTrans;
    public Transform targetTrans => _targetTrans != null ? _targetTrans : _targetTrans = transform;

猜你喜欢

转载自blog.csdn.net/m0_55907341/article/details/123375941