|
|
Opublikowano 28.01.2019 16:03:40
|
|
|
|

1. Co to jest generyczne?
Generyki to nowa składnia wprowadzona w C# 2.0, nie cukr składniowy, ale funkcje oferowane przez ulepszenia frameworków w wersji 2.0.
Podczas programowania programów często spotykamy moduły o bardzo podobnych funkcjach, ale obsługujące różne dane. Ale nie mamy wyboru i musimy napisać wiele metod osobno, aby obsługiwać różne typy danych. Na ten moment pytanie brzmi: czy istnieje sposób, by użyć tej samej metody do obsługi różnych typów parametrów? Pojawienie się leków generycznych zostało specjalnie zaprojektowane, by rozwiązać ten problem.
2. Dlaczego używać generyków
Przyjrzyjmy się następującemu przykładowi:
Wynik:
Z powyższych wyników wynika, że te trzy metody mają te same funkcje, z wyjątkiem różnych parametrów, które przechodzą. W czasie wersji 1.0 nie istniała koncepcja generyków, więc co robić. Wierzę, że wiele osób pomyśli o dziedziczeniu jednej z trzech głównych cech OOP, wiemy, że w C# obiekt jest klasą bazową wszystkich typów, a powyższy kod jest zoptymalizowany w następujący sposób:
Wynik:
Z powyższych wyników wynika, że użycie typu Object spełnia nasze wymagania i rozwiązuje ponowne wykorzystanie kodu. Niektórzy mogą się zastanawiać, dlaczego możliwe jest przekazanie int, ciągu itd., skoro jest to zdefiniowane jako typ obiektu? Są dwa powody:
1. Typ obiektu jest klasą nadrzędną wszystkich typów.
2. Dzięki dziedziczeniu podklasy mają wszystkie atrybuty i zachowania klasy nadrzędnej, a gdziekolwiek klasa nadrzędna się pojawi, może zostać zastąpiona przez podklasy.
Jednak powyższa metoda typu obiektowego niesie ze sobą kolejny problem: "boxing" i rozpakowywanie mogą obniżyć wydajność programu.
Microsoft wprowadził generyki w C# 2.0, które bardzo dobrze rozwiązują powyższe problemy.
3. Ogólne parametry typu
W ogólnej definicji typu lub metody parametr typu to zastępczy element określony przez klienta dla konkretnego typu, gdy instancjonuje zmienną tego typu. Klasa generyczna (GenericList<T>) nie może być użyta w obecnej formie, ponieważ nie jest typem prawdziwym; To bardziej jak plan typów. Aby użyć GenericList<T>, kod klienta musi zadeklarować i instancjonować typ konstruktu, określając parametr typu w nawiasach kątowych. Argument typu dla tej konkretnej klasy może być dowolnym typem rozpoznanym przez kompilator. Możesz stworzyć dowolną liczbę instancji typu konstruktu, z których każda ma inny parametr typu.
Kod w powyższym przykładzie można zmodyfikować w następujący sposób:
Rozmow:
Pokaż wyniki:
|
Poprzedni:Dostawcy plików .NET CoreNastępny:Zapytanie o nazwę bazy MySQL, nazwę tabeli oraz nazwę pola
|