Общий означает, что он не относится к конкретному типу данных. C# позволяет определять универсальные универсальные классы, интерфейсы, абстрактные классы, свойства, события, делегаты и операторы с использованием параметра типа и без конкретных типов данных. Параметр типа — это заполнитель для определенного типа, указанного при создании экземпляра универсального типа.

Универсальный тип объявляется путем указания параметра типа в угловых скобках после имени типа, например, TypeName‹T›, где T — параметр типа.
Ниже приведен пример, в котором мы объявляем класс с универсальным типом. Здесь класс KeyValue будет иметь константу строкового типа для ключевого свойства и универсальный тип T, как для свойства Value.
Теперь мы увидим, как мы можем создавать экземпляры дженериков в C#.
В приведенном выше примере мы создали экземпляр List с классом Type as KeyValue, который имеет тип как строку. Затем мы добавили некоторые значения в список, анонимно создав экземпляр типа KeyValue. После этого мы перебираем список kv и печатаем значения. Ниже приведен вывод приведенного выше кода.

Мы можем поместить любой тип вместо общего типа при создании экземпляра, что делает его более пригодным для повторного использования.
Спасибо, что прочитали, комментируйте свои предложения, делитесь статьей, следите за мной и публикацией Abhima C# Programming.
Стих дня из Бхагавад-гиты
अव्यक्ताद्व्यक्तय: सर्वा: प्रभवन्त्यहरागमे |
रात्र्यागमे प्रलीयन्ते तत्रैवाव्यक्तसञ्ज्ञके || 18||
avyaktād vyaktayaḥ sarvāḥ prabhavantyahar-āgame
rātryāgame pralīyante tatraivāvyakta-sanjñake
БГ 8.18: С наступлением дня Брахмы все живые существа исходят из непроявленного источника. И с наступлением его ночи все воплощенные существа снова сливаются в свой непроявленный источник.