1. Wprowadzenie do C#
  2. Szybki start
  3. Pierwszy program
  4. Komentarze
  5. Typy danych
  6. Zmienne
  7. Pola
  8. Właściwości
  9. Stałe
  10. Metody
  11. Instrukcje warunkowe
  12. Pętle
  13. Tablice
  14. Kolekcje
  15. Klasy
  16. Dziedziczenie
  17. Polimorfizm
  18. Konwersja typów
  19. Właściwości klasy String
  20. Typy wyliczeniowe
  21. Interfejsy
  22. Klasy statyczne
  23. Klasy Abstrakcyjne
  24. Przestrzenie nazw
  25. Wyjątki
  26. Typy generyczne
  27. JSON
  28. XML
  29. Podsumowanie

Metody generyczne

Metody generyczne to metody, które mogą przyjmować różne typy danych jako argumenty. W języku C#, aby utworzyć metodę generyczną, należy określić typ generyczny po nazwie metody, używając znaku <>.

Metoda generyczna pozwala na uniwersalne i elastyczne wykorzystanie metody, dzięki czemu możemy używać tej samej metody dla różnych typów danych bez konieczności tworzenia osobnych metod dla każdego typu danych.

								
using System;

class MojaKlasa
{
    public static T Max<T>(T a, T b) where T : IComparable<T>
    {
        return a.CompareTo(b) > 0 ? a : b;
    }
}
								
						
Wyjaśnienie

W powyższym przykładzie, metoda Max jest metodą generyczną, która przyjmuje dwa argumenty typu T i zwraca typ T. Metoda ta porównuje oba argumenty i zwraca ten, który jest większy. Możemy teraz użyć tej metody dla różnych typów danych, np. int, double, string.

								
using System;

class Sortowanie
{
    public static void Posortuj<T>(T[] elementy, PorownanieDelegat<T> porownanie)
    {
        for (int i = 0; i < elementy.Length - 1; i++)
        {
            for (int j = i + 1; j < elementy.Length; j++)
            {
                if (porownanie(elementy[i], elementy[j]) > 0)
                {
                    T tymczasowa = elementy[i];
                    elementy[i] = elementy[j];
                    elementy[j] = tymczasowa;
                }
            }
        }
    }
}

delegate int PorownanieDelegat<T>(T a, T b);

class Program
{
    static void Main()
    {
        int[] liczby = { 3, 7, 4, 2, 8, 6 };
        Sortowanie.Posortuj(liczby, PorownajLiczby);
        foreach (int liczba in liczby)
        {
            Console.Write(liczba + " ");
        }
        // wyświetla: 2 3 4 6 7 8

        string[] nazwiska = { "Kowalski", "Nowak", "Wiśniewski" };
        Sortowanie.Posortuj(nazwiska, PorownajNazwiska);
        foreach (string nazwisko in nazwiska)
        {
            Console.Write(nazwisko + " ");
        }
        // wyświetla: Kowalski Nowak Wiśniewski
    }

    static int PorownajLiczby(int a, int b)
    {
        return a.CompareTo(b);
    }

    static int PorownajNazwiska(string a, string b)
    {
        return string.Compare(a, b);
    }
}
								
						
Wyjaśnienie

W powyższym przykładzie używamy metody generycznej do implementacji systemu sortowania dla różnych typów danych.