CentrumXP.pl » Witamy
CentrumXP.pl
 
Szukaj
Subskrypcja
Powiadomienie e-mailem o nowościach na CentrumXP.pl:
E-mail: Zapisz
Czy zamierzasz pobrać Internet Explorer 9?


CentrumXP.pl » Microsoft .NET » Kurs C#, cz. I » Dodaj do ulubionych Dodaj do ulubionych   Dodaj do ulubionych Wersja do wydruku

17. Typy generyczne (generics)

Autor: Daniel Celeda    Opublikowano: 30 maja 2006    Odsłon: 97139    »Skomentuj...
Strona:
Zobacz również:

01. "Programowanie" - z czym to się je?

02. Programowanie obiektowe

03. Do czego potrzebne jest nam Visual Studio 2005

04. Konfiguracja i obsługa C# 2005 Express Edition

05. Tworzenie solution i nowych projektów

06. Klasy i obiekty

07. Tworzenie oraz inicjalizacja obiektów

08. Operatory arytmetyczne

09. Porozmawiajmy o „stringach”

10. Typy proste i referencyjne

11. Wartości logiczne

12. Inne operatory logiczne

13. Instrukcje iteracyjne (tzw. pętle) - cz. I

14. Instrukcje iteracyjne (tzw. pętle) - cz. II

15. Tablice

16. Kolekcje

18. Przestrzenie nazw (namespaces)

19. Modyfikatory dostępu

20. Metody statyczne oraz metody instancyjne

»Uzyskaj pomoc na forum

Jak widzimy tym razem nie musimy rzutować pobieranych elementów z kolekcji. Wiadomo od razu, że są one typu „Element” i mamy dostęp do atrybutu „Liczba”.

Wynik:

Dla osób zainteresowanych warto poczytać o tym jak tworzyć własne typy generyczne, jak zakładać ograniczenia na typy oraz jak deklarować szablony metod (metody generyczne).

Ćwiczenie.

Napisz program pobierający pięć liczb od użytkownika i dodający je do „List”. Następnie program sam doda liczbę „12” na miejsce o indeksie 2 oraz wypisze liczby za pomocą pętli „for”.

using System;
using System.Collections.Generic;
using System.Collections;
 
namespace Kolekcje
{
    class Program
    {
        static void Main(string[] args)
        {
            List<int> lista = new List<int>();
 
            for (int i = 0; i < 5; i++)
            {
                Console.WriteLine("Podaj liczbę.");
                int liczba = int.Parse(Console.ReadLine());
                lista.Add(liczba);
            }
 
            lista.Insert(2, 12);
 
            Console.Write("\nElementy: ");
            for (int i = 0; i < lista.Count; i++)
            {
                Console.Write(lista[i] + " ");
            }
 
            Console.ReadKey();
        }
    }
}


«Wstecz 1 2 3 4 5 Dalej» 

Aktualna ocena to: 3,27

Oceń artykuł...
Porażka Kiepski Taki Sobie Dobry Super!

Tagi:  

A teraz:    Dodaj do ulubionych Dodaj do ulubionych    Wydrukuj Wydrukuj    Wyślij link znajomemu Wyślij link znajomemu    Skomentuj Skomentuj

Komentarze do 17. Typy generyczne (generics)

Dodaj komentarz»

NOOB 9 września 2007, 18:41

Nie kumam

torq314 3 października 2007, 13:12

zgadzam się z poprzednim komentarzem o tyle, że gdybym skądinąd nie wiedział o co chodzi, to po przeczytaniu tego tekstu na pewno niczego bym nie zrozumiał.

inny NOOBek 7 października 2007, 17:12

O ile dobrze rozumiem to ten "generic" to jest nic innego jak nieco zmodyfikowana zwykła tablica, tyle tylko że o ile w standardowych tablicach mogliśmy mieć tylko "stare" typy jak np. int, double, string, to w przypadku "list" jako "typ" możemy użyć klasę, nadal jednak wszystkie pliki w tablicy muszą być tej samej klasy. W przypadku kolekcji kolejne klasy w "tablicy" mogły być innego rodzaju. Pierwszym el. tablicy mogła być klasa "PierwszaKlasa", na drugim "DrugaKlasa" itp. Tutaj jeżeli już umieścimy jakiś typ klasy wewnątrz "list" to musimy się go trzymać do końca. Pomaga to uniknąć błędów gdybyśmy przypadkiem umiescili 2 inne klasy w tej samej tablicy generycznej (już podczas kompilacji) i przyśpiesza działanie programu. P.S. Przynajmniej ja to tak zrozumiałem. Pozdro

eh 24 października 2007, 14:35

z tego co widze to taka kolekcja stworzona wedlug szablonu; trzymajaca jeden typ danych jak tablica, a dajaca wiele innych kozysci jak kolekcja (-:

Kot-ek 19 listopada 2007, 12:22

"Deklarowanie kolekcji generycznej wygląda następująco: Kolekcja instancjaKolekcji = new Kolekcja();" A czy autor nie zapomniał przypadkiem nawiasów trójkątnych... Kolekcja_generyczna#typ# instancjaKolekcji = new Kolekcja_generyczna#typ#();

Kot-ek 19 listopada 2007, 12:23

Uwaga do poprzedniego komentarza. Chciałem podać prawidłową deklaracje, ale najwidoczniej w komentarzach nie można stosować nawiasów klamrowych... więc osoby czytające ten komentarz niech zamienią znak # na odpowiednio: lewy, bądź prawy nawias trójkątny.

Frondeus 23 czerwca 2008, 20:50

Troche to przypomina szablony w c++...

camillos 5 lipca 2008, 13:55

Mi to w niczym nie przypomina szablonów, jak już to raczej wektory:D

losiu99 6 sierpnia 2008, 17:45

Przypomina Ci wektor i nie przypomina szablonu? std::vector z C++ to jest właśnie przykład szablonu... A jeśli mówisz o jakimś innym wektorze, to napisz coś bliżej o tym, bo szczerze mówiąc żaden inny wektor mi nie przychodzi do głowy. Pozdrawiam.

daniel C 28 grudnia 2008, 17:21

jesteście żałosni. spróbujcie wku na pamięc taki text a potem zaraz pisac tasoiemcowy program. dlatego bravo dla mnie i dla autora !

sezam 17 marca 2009, 11:45

przecierz to proste

ilkus 16 czerwca 2009, 23:43

Czy da sie jakos obejsc ograniczenie generyzmu dotyczacego operatorow? Chodzi o to, czy mozna w prosty sposob zrobic cos takiego jak w C++: template T Suma(T a, T b) { return a+b}; Z tego co wiem, kompilator najpierw sprawdza czy dla klasy T (nieznanej poki co) nie ma nigdzie zadeklarowanego operatora + wiec nie pusci programu. Inaczej niz w C++, ktory program pusci i dopiero podczas dzialania, tzn praktycznego uzycia szablonu klasy, najwyzej wyprodukuje komunikat o bledzie.

J 26 kwietnia 2011, 18:17

jest tu moim zdaniem błąd mówiąc na typ niegeneryczny jako ogólny, gdyż na tym generyczny mówi się ze jest typem generycznym. Moze to pomieszac w głowie czytając inne kursy.


Dodaj swój komentarz

»Zasady udzielania komentarzy

Autor:  
Komentarz:
Dodaj komentarz
© 2012 Onex Group
Onex Group O Onex Group  |  O CentrumXP.pl  |  Kontakt  |  Reklama
Nasze serwisy: CentrumXP.plXboxSpot.pl  |  Jama Mastaha