# HasComponent

> Checks whether an entity has a specific type of component.

## Definition

* **Type:** Method
* **Namespace:** [Unity.Entities](/engine/7000.0/script-reference/unity/entities.md)
* **Assembly:** UnityEngine.EntitiesModule

## HasComponent\<T>(Entity)

Checks whether an entity has a specific type of component.

```csharp
public static bool HasComponent<T>(Entity entity) where T : unmanaged, IComponentData
```

### Parameters

**** (\[Entity]\(/engine/7000.0/script-reference/unity/entities/entity)): The Entity object.

### Returns

| Type                                                          | Description                                      |
| ------------------------------------------------------------- | ------------------------------------------------ |
| [bool](https://learn.microsoft.com/dotnet/api/system.boolean) | True, if the specified entity has the component. |

### Remarks

Always returns false for an entity that has been destroyed.

Use this method to check if another entity has a given type of component using its [Entity](/engine/7000.0/script-reference/unity/entities/entity.md) object. For example, if you have a component that contains an Entity field, you can check whether the referenced entity has a specific type of component using this method. (Entities in the set always have required components, so you don’t need to check for them.)

When iterating over a set of entities with an idomatic foreach query, don't use this method to access the data of the current entity in the set. It's faster to change your query to avoid using optional components.

When you call this method this method gets replaced with component access methods through a cached [ComponentLookup\<T>](/engine/7000.0/script-reference/unity/entities/componentlookup1.md).

This lookup method results in a slower, indirect memory access. When possible, organize your data to minimize the need for indirect lookups.

Not working in IJobEntity, and Utility methods

## HasComponent\<T>(SystemHandle)

Checks whether an entity associated with a system has a specific type of component.

```csharp
public static bool HasComponent<T>(SystemHandle systemHandle) where T : unmanaged, IComponentData
```

### Parameters

**** (\[SystemHandle]\(/engine/7000.0/script-reference/unity/entities/systemhandle)): The system handle.

### Returns

| Type                                                          | Description                                                   |
| ------------------------------------------------------------- | ------------------------------------------------------------- |
| [bool](https://learn.microsoft.com/dotnet/api/system.boolean) | True, if the specified system owned entity has the component. |

### Remarks

Always returns false for an system that has been destroyed.

Use this method to check if another system owned entity has a given type of component using its [SystemHandle](/engine/7000.0/script-reference/unity/entities/systemhandle.md) object.

When you call this method this method gets replaced with component access methods through a cached [ComponentLookup\<T>](/engine/7000.0/script-reference/unity/entities/componentlookup1.md).

Not working in IJobEntity, and Utility methods
