# operator ==(Object, Object)

> Compares two object references to see if they refer to the same object.

## Definition

* **Type:** Operator
* **Namespace:** [UnityEngine](/engine/6000.0/script-reference/unityengine.md)
* **Assembly:** UnityEngine.CoreModule

```csharp
public static bool operator ==(Object x, Object y)
```

### Parameters

**** (\[Object]\(/engine/6000.0/script-reference/unityengine/object)): The first object.**** (\[Object]\(/engine/6000.0/script-reference/unityengine/object)): The object to compare against the first.

### Returns

| Type                                                          | Description |
| ------------------------------------------------------------- | ----------- |
| [bool](https://learn.microsoft.com/dotnet/api/system.boolean) |             |

### Remarks

When comparing with `null`, Unity's implementation of the equality operator can give different results than `Object.ReferenceEquals` or `==` in standard C#.

In addition to checking if the managed object reference is `null`, the custom `==` operator in `UnityEngine.Object` also checks if the underlying native object pointer is null. If either is true, `== null` evaluates to `true`.

For more information on why and how some managed objects can exist in a so-called detached state without a counterpart native object, refer to [Object](/engine/6000.0/manual/scripting/object-oriented-development/fundamental-unity-types/class-object.md).

```csharp
using UnityEngine;

public class Example : MonoBehaviour
{
    public Collider target;
    void OnTriggerEnter(Collider trigger)
    {
        if (trigger == target)
        {
            print("We hit the target trigger");
        }
    }
}
```

Return early if there is no target:

```csharp
using UnityEngine;

public class Example : MonoBehaviour
{
    public Transform target;
    void Update()
    {
        // Early out if the target is gone
        if (target == null)
        {
            return;
        }
    }
}
```
