Strona startowa Ludzie pragną czasami się rozstawać, żeby móc tęsknić, czekać i cieszyć się z powrotem.Rozejrzała się po pokoju...omawianego zagadnienia jest wyróz˙nienie typów intencji (sił illokucyjnych), które decy- duja˛ o charakterze (funkcji) wypowiedzi...on specified terms...- Są różne powody - odparł...Ávila SĂĄnchez był z natury myślicielem i zarazem człowie­kiem czynu, moralności i kultury...The last two lines of the error output are actually a stack backtrace...BHD- To skorpion - odpowiedział..."Ještě to by mi chybělo, panská veteši! Moc se vyptávᚠa zdrźuješ mě...kulbakę
 

Ludzie pragną czasami się rozstawać, żeby móc tęsknić, czekać i cieszyć się z powrotem.

Write("{0} ", employee.ToString());
}
Console.Write("\n");
}
}
}
Wynik:
0 5 10 15 20
100 101 102 103 104
WSKAZÓWKA
Kod źródłowy poszczególnych ćwiczeń można pobrać z serwerów wy-
dawnictwa Helion, spod adresu ftp://ftp.helion.pl/przyklady/vc25za.zip.
Kod publikowany jest w postaci spakowanego archiwum. Rozpakowanie
archiwum zaowocuje utworzeniem szeregu katalogów odpowiadających
poszczególnym rozdziałom, a w nich podkatalogów o nazwach zgod-
nych z nazwami poszczególnych projektów. Na przykład kodu z listin-
gu 1.1 należy szukać w katalogu r1\CreateATypeSafeList.
Jak to działa?
Kod z listingu 1.1 utworzył dwie klasy: klasę Employee (pracownik) — kla-sę obiektów przechowywanych w kolekcji, oraz klasę Program tworzoną
przez kreator Visual Studio 2005. Do tego w programie wykorzystana zo-
stała klasa List z biblioteki klas .NET Framework Class Library.
Klasa Employee zawiera pojedyncze prywatne pole (empID), konstruktor
i metodę przesłaniającą metodę ToString i wyświetlającą ciąg zawiera-
jący wartość pola empID.
W klasie Program tworzony jest egzemplarz klasy List mający przecho-
wywać obiekty klasy Employee. Typem empList jest więc „kolekcja List
obiektów Employee”. Stąd deklaracja kolekcji:
List empList
W definicji List element T jest symbolem reprezentującym przyszły, właściwy typ listy.
Tworzenie typowanych list za pomocą kolekcji generycznych
25
Deklaracja empList tworzy (jak zwykle) referencję obiektu tworzonego na stercie słowem kluczowym new. Słowo kluczowe new należy uzupełnić wy-wołaniem konstruktora, co wygląda następująco:
new List()
Takie wywołanie tworzy na stercie egzemplarz „kolekcji List obiektów
Employee”; cała instrukcja oznacza zaś utworzenie empList i przypisa-
nie do niego referencji nowego obiektu sterty:
List empList = new List();
WSKAZÓWKA
Całość działa dokładnie tak, jak w instrukcji:
Dog milo = new Dog();
tworzącej egzemplarz klasy Dog na stercie i przypisującej go do re-
ferencji do typu Dog o nazwie milo.
W kolejnej instrukcji następuje utworzenie drugiej kolekcji; tym razem jest to „kolekcja List wartości całkowitych”:
List intList = new List();
Od tego momentu można rozpocząć wypełnianie listy wartości całkowi-
tych wartościami całkowitymi, a listy elementów typu Employee obiektami klasy Employee. Po wypełnieniu list można w pętlach foreach przejrzeć listy, wyłuskać poszczególne elementy i wypisać ich wartości na konsoli:
foreach (Employee employee in empList)
{
Console.Write("{0} ", employee.ToString());
}
A co…
… kiedy do listy obiektów Employee dodana zostanie wartość całkowita?
Cóż, trzeba spróbować. Wystarczy usunąć znacznik komentarza z pre-
zentowanego poniżej wiersza z listingu 1.1 i spróbować ponownie skom-
pilować program:
empList.Add(i * 5);
Kompilator powinien zgłosić parę błędów:
26 Rozdział 1: C# 2.0
Error 1 The best overloaded method match for
'System.Collections.
Generic.List.Add(ListCollection.Employee)' has some
invalid arguments
Error 2 Argument '1': cannot convert from 'int' to
'ListCollection.Employee'
Komunikaty opisujące te dwa błędy pozwalają stwierdzić, że nie można
dodawać elementu typu int do kolekcji obiektów typu Employee, bo pomię-
dzy tymi typami nie da się przeprowadzić niejawnej konwersji, nie za-
chodzi też relacja zawierania się jednego typu w drugim.
Co ważniejsze, kolizję typów wykrywa się już na etapie kompilacji, a nie W kolekcjach dopiero w czasie wykonania — a wiadomo, że błędy czasu wykonania typowanych można mają tendencję do ujawniania się nie na stanowiskach testowych, a na umieszczać elementy typów pochodnych
biurkach klientów!
wobec typu
… z innymi kolekcjami generycznymi; są jeszcze jakieś?
deklarowanego.
Kolekcja elementów
Owszem, w platformie .NET 2.0 dostępne są też inne kolekcje typowane, typu Employee może więc przechowywać
jak choćby Stack (stos) czy Queue (kolejka); do tego dochodzi interfejs również elementy ICollection.
typu Manager, o ile
Manager jest typem
Kolekcje te stosuje się tak samo, jak List. Aby na przykład utworzyć pochodnym stos obiektów typu
Employee.
Employee, należy w definicji klasy Stack zastąpić
T (Stack) nazwą typu Employee: