A generic class stores or uses a value while keeping its type.

Generic Classes

GenericClasses.cs
using System;

class Box<T>
{
    public T Value { get; }

    public Box(T value)
    {
        Value = value;
    }
}

class Program
{
    static void Main()
    {
        int score = ;
        Box<int> scoreBox = new Box<int>(score);
        Box<string> labelBox = new Box<string>("points");

        Console.WriteLine($"score={scoreBox.Value}");
        Console.WriteLine($"label={labelBox.Value}");
    }
}
using System;

class Box<T>
{
    public T Value { get; }

    public Box(T value)
    {
        Value = value;
    }
}

class Program
{
    static void Main()
    {
        int score = ;
        Box<int> scoreBox = new Box<int>(score);
        Box<string> labelBox = new Box<string>("points");

        Console.WriteLine($"score={scoreBox.Value}");
        Console.WriteLine($"label={labelBox.Value}");
    }
}
using System;

class Box<T>
{
    public T Value { get; }

    public Box(T value)
    {
        Value = value;
    }
}

class Program
{
    static void Main()
    {
        int score = ;
        Box<int> scoreBox = new Box<int>(score);
        Box<string> labelBox = new Box<string>("points");

        Console.WriteLine($"score={scoreBox.Value}");
        Console.WriteLine($"label={labelBox.Value}");
    }
}
generic class A generic class has a type parameter in its class name, such as `Box<T>`.