# UnsafeGenericPool<T>

> Provides a static implementation of ObjectPool<T>.

## Definition

* **Type:** Class
* **Namespace:** [UnityEngine.Pool](/engine/6000.3/script-reference/unityengine/pool.md)
* **Assembly:** UnityEngine.CoreModule

```csharp
public static class UnsafeGenericPool<T> where T : class, new()
```

## Remarks

This is an alternative to [GenericPool\<T>](/engine/6000.3/script-reference/unityengine/pool/genericpool1.md) which has collection checks disabled. Some objects generate garbage when they are compared during the collection checks. This version does not perform any collection checks so no garbage will be generated. Note this is not thread-safe.

## Examples

```csharp
using UnityEngine.Pool;

public class UnsafeGenericPoolPoolExample
{
    class MyClass
    {
        public int someValue;
        public string someString;
    }

    void GetPooled()
    {
        // Get an instance
        var instance = UnsafeGenericPool<MyClass>.Get();

        // Return the instance
        UnsafeGenericPool<MyClass>.Release(instance);
    }
}
```

## Static Methods

| Method                                                                                    | Description                                                                              |
| ----------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- |
| [Get](/engine/6000.3/script-reference/unityengine/pool/unsafegenericpool1/get.md)         | Get an instance from the pool. If the pool is empty then a new instance will be created. |
| [Release](/engine/6000.3/script-reference/unityengine/pool/unsafegenericpool1/release.md) | Returns the instance back to the pool.                                                   |
