Typy generyczne
Typy generyczne w języku C# pozwalają na tworzenie klas, metod i interfejsów, które mogą przyjmować różne typy danych jako argumenty. Dzięki temu możemy napisać ogólniejszy kod, który będzie mógł być użyty z różnymi typami danych, bez konieczności jego duplikowania dla każdego z nich. Typy generyczne są oznaczane przez <> po nazwie klasy lub metody, w której są używane.
przykład klasy generycznej "Kolejka" w języku C#, która pozwala na przechowywanie elementów w kolejności
FIFO
(First In First Out).
using System;
class Program
{
static void Main(string[] args)
{
Kolejka<int> kolejka = new Kolejka<int>(3);
kolejka.Dodaj(1);
kolejka.Dodaj(2);
kolejka.Dodaj(3);
Console.WriteLine(kolejka.Pobierz());
Console.WriteLine(kolejka.Pobierz());
Console.WriteLine(kolejka.Pobierz());
}
}
class Kolejka<T>
{
private T[] elementy;
private int poczatek = 0;
private int koniec = 0;
public Kolejka(int rozmiar)
{
elementy = new T[rozmiar];
}
public void Dodaj(T element)
{
if (koniec == elementy.Length)
{
T[] noweElementy = new T[elementy.Length * 2];
Array.Copy(elementy, noweElementy, elementy.Length);
elementy = noweElementy;
}
elementy[koniec++] = element;
}
public T Pobierz()
{
if (Pusta)
{
throw new InvalidOperationException("Kolejka jest pusta");
}
T element = elementy[poczatek];
elementy[poczatek++] = default(T);
return element;
}
public bool Pusta => poczatek == koniec;
}
1
2
3
2
3