---
title: "Generics"
content_type: tutorial
url: "https://learn.unity.com/tutorial/generics?language=en"
language: en
difficulty: intermediate
duration_minutes: 5
unity_version:
  - "2019.3"
  - "2019.2"
  - "2019.1"
  - "2018.4"
  - "2018.3"
  - "2018.2"
  - "2018.1"
  - "2017.4"
  - "2017.3"
  - "2017.2"
  - "2017.1"
  - "5.x"
  - "4.x"
supported_unity_versions:
  - name: "2019.3"
    url: "https://learn.unity.com/tutorial/generics.md?language=en&version=2019.3"
  - name: "2019.2"
    url: "https://learn.unity.com/tutorial/generics.md?language=en&version=2019.2"
  - name: "2019.1"
    url: "https://learn.unity.com/tutorial/generics.md?language=en&version=2019.1"
  - name: "2018.4"
    url: "https://learn.unity.com/tutorial/generics.md?language=en&version=2018.4"
  - name: "2018.3"
    url: "https://learn.unity.com/tutorial/generics.md?language=en&version=2018.3"
  - name: "2018.2"
    url: "https://learn.unity.com/tutorial/generics.md?language=en&version=2018.2"
  - name: "2018.1"
    url: "https://learn.unity.com/tutorial/generics.md?language=en&version=2018.1"
  - name: "2017.4"
    url: "https://learn.unity.com/tutorial/generics.md?language=en&version=2017.4"
  - name: "2017.3"
    url: "https://learn.unity.com/tutorial/generics.md?language=en&version=2017.3"
  - name: "2017.2"
    url: "https://learn.unity.com/tutorial/generics.md?language=en&version=2017.2"
  - name: "2017.1"
    url: "https://learn.unity.com/tutorial/generics.md?language=en&version=2017.1"
  - name: "5.x"
    url: "https://learn.unity.com/tutorial/generics.md?language=en&version=5.x"
  - name: "4.x"
    url: "https://learn.unity.com/tutorial/generics.md?language=en&version=4.x"
available_languages:
  - name: "en"
    url: "https://learn.unity.com/tutorial/generics.md?language=en"
  - name: "es"
    url: "https://learn.unity.com/tutorial/genericos.md?language=es"
  - name: "ja"
    url: "https://learn.unity.com/tutorial/generics-jp.md?language=ja"
  - name: "zh-cn"
    url: "https://learn.unity.com/tutorial/tong-yong.md?language=zh-cn"
last_updated: "2026-08-04T14:21:21.000Z"
---

# Generics

Learn to define and use generic methods and classes in C# to write reusable, type-safe code.

How to create and use generic methods and classes.

## 1. Generics

[Video](https://connect-mediagw.unity.com/h1/20220110/videos/b55886f1-d5b6-4380-b8c6-5b0c991d7e8a_U_Intermediate_5_Generics.mp4) ([Transcript (en)](https://connect-mediagw.unity.com/h1/20220110/78f69fce-cf83-4583-857e-b8c579783713_I_05_Generics.vtt))

**SomeClass**

```csharp
using UnityEngine;
using System.Collections;

public class SomeClass 
{
    //Here is a generic method. Notice the generic
    //type 'T'. This 'T' will be replaced at runtime
    //with an actual type. 
    public T GenericMethod<T>(T param)
    {
        return param;
    }
}
```

**SomeOtherClass**

```csharp
using UnityEngine;
using System.Collections;

public class SomeOtherClass : MonoBehaviour 
{
    void Start () 
    {
        SomeClass myClass = new SomeClass();

        //In order to use this method you must
        //tell the method what type to replace
        //'T' with.
        myClass.GenericMethod<int>(5);
    }
}
```

**GenericClass**

```csharp
using UnityEngine;
using System.Collections;

//Here is a generic class. Notice the generic type 'T'.
//'T' will be replaced with an actual type, as will also 
//instances of the type 'T' used in the class.
public class GenericClass <T>
{
    T item;

    public void UpdateItem(T newItem)
    {
        item = newItem;
    }
}
```

**GenericClassExample**

```csharp
using UnityEngine;
using System.Collections;

public class GenericClassExample : MonoBehaviour 
{
    void Start () 
    {        
        //In order to create an object of a generic class, you must
        //specify the type you want the class to have.
        GenericClass<int> myClass = new GenericClass<int>();

        myClass.UpdateItem(5);
    }
}
```
