Skip to content

Latest commit

 

History

History
33 lines (23 loc) · 994 Bytes

USP0017.md

File metadata and controls

33 lines (23 loc) · 994 Bytes

USP0017 Unity objects should not use coalescing assignment

UnityEngine.Object should not be used with the coalescing assignment operator.

Suppressed Diagnostic ID

IDE0074 - Use compound assignment

Examples of code that produces a suppressed diagnostic

using UnityEngine;

class Camera : MonoBehaviour
{
    public Transform a;
    public Transform b;

    public Transform NC()
    {
        // Please note that this construct should not be used with Unity objects either, and will trigger a diagnostic.
        // We are just using it here for demonstration purposes.
        return a ?? (a = b);
    }
}

Why is the diagnostic reported?

Under normal circumstances, return a ?? (a = b) can be simplified to return a ??= b.

Why do we suppress this diagnostic?

Unity has overridden the == operator for UnityEngine.Object. If you use the ??= operator with those objects, it will not behave as expected because it checks for null in a different way.