class Program { static void Main(string[] args) { KlasaGeneryczna<int> obiektKlasyGenerycznej = new KlasaGeneryczna<int>(); obiektKlasyGenerycznej.Dodaj(12); KlasaGeneryczna<string> obiektKlasyGenerycznej1 = new KlasaGeneryczna<string>(); obiektKlasyGenerycznej1.Dodaj("napis"); Console.ReadKey(); } public class KlasaGeneryczna<T> { public void Dodaj(T parametr) { Console.WriteLine("Wynik metody Dodaj: " + parametr); } } }Możliwe jest ograniczenie typów jakie może przyjąć klasa generyczna. Aby ograniczyć typ należy użyć słowa kluczowego where:
public class KlasaGeneryczna<T> where T : struct { public void Dodaj(T parametr) { Console.WriteLine("Wynik metody Dodaj: " + parametr); } }W powyższym przypadku nie będzie możliwe przekazanie, jako parametru typu string, ponieważ string jest klasą a nie strukturą jak typ int. Aby można było przekazać typ string należy użyć następującego kodu:
public class KlasaGeneryczna<T> where T : classMożliwe jest również przekazanie kilku parametrów generycznych:
class Program { static void Main(string[] args) { KlasaGeneryczna<int,string> obiektKlasyGenerycznej = new KlasaGeneryczna<int,string>(); obiektKlasyGenerycznej.Dodaj(12,"napis"); KlasaGeneryczna<int, int> obiektKlasyGenerycznej1 = new KlasaGeneryczna<int, int>(); obiektKlasyGenerycznej1.Dodaj(12,12); Console.ReadKey(); } public class KlasaGeneryczna<T,T1> where T : struct { public void Dodaj(T parametr, T1 parametr1) { Console.WriteLine("Wynik metody Dodaj: " + parametr + " " + parametr1); } } }