# TryGetComponent

> Retrieves the component of the specified type, if it exists.

## Definition

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

## TryGetComponent\<T>(T)

Retrieves the component of the specified type, if it exists.

```csharp
public bool TryGetComponent<T>(out T component)
```

### Parameters

**** (T): The `out` parameter that contains the component or `null`.

### Returns

| Type                                                          | Description                                                  |
| ------------------------------------------------------------- | ------------------------------------------------------------ |
| [bool](https://learn.microsoft.com/dotnet/api/system.boolean) | Returns `true` if the component is found, `false` otherwise. |

### Remarks

`TryGetComponent` attempts to retrieve the component of the given type. The difference between this and [GameObject.GetComponent](/engine/6000.6/script-reference/unityengine/gameobject/getcomponent.md) is that this method doesn't allocate memory in the Editor when the requested component does not exist.

**Note**: This method doesn't search the hierarchy of parent or child GameObjects, but is confined to the GameObject itself. Because it only checks that GameObject, `TryGetComponent` returns the requested component whether the GameObject is active or inactive. The active state affects only the hierarchy-traversing methods such as [GameObject.GetComponentInChildren](/engine/6000.6/script-reference/unityengine/gameobject/getcomponentinchildren.md), which take an `includeInactive` parameter.

```csharp
using UnityEngine;

public class TryGetComponentExample : MonoBehaviour
{

    public GameObject objectToCheck;

    void Start()
    {
        if (objectToCheck.TryGetComponent<HingeJoint>(out HingeJoint hinge))
        {
            hinge.useSpring = false;
        }
    }
}
```

Additional Resources: [Component](/engine/6000.6/script-reference/unityengine/component.md), [GameObject.GetComponent](/engine/6000.6/script-reference/unityengine/gameobject/getcomponent.md)

## TryGetComponent(Type, Component)

The non-generic version of this method.

```csharp
public bool TryGetComponent(Type type, out Component component)
```

### Parameters

**** (\[Type]\(https\://learn.microsoft.com/dotnet/api/system.type)): The type of component to search for.**** (\[Component]\(/engine/6000.6/script-reference/unityengine/component)): The `out` parameter that will contain the component or `null`.

### Returns

| Type                                                          | Description                                                  |
| ------------------------------------------------------------- | ------------------------------------------------------------ |
| [bool](https://learn.microsoft.com/dotnet/api/system.boolean) | Returns `true` if the component is found, `false` otherwise. |

### Remarks

This version of `TryGetComponent` is not as efficient as the Generic version (above), so you should only use it if necessary.
