Griffiths I., Liberty J. - C#. Programowanie. Wydanie VI.pdf

(16283 KB) Pobierz
.
ajleps.;
)
·podręc
u.ik:
po
'ił
tęco1�½l
I
O REILLY®
�½iallh
U'
i $·"'
,J '
Jan
r(f.litlts.
da1us.
i*b rtJ
·
Spis treści
Wstęp
......................................................................................................................................
13
19
19
20
21
22
23
24
25
27
1. Prezentacja C#
.„.„.„.„.„.„.„.„.„.„.„.„.„.„.„.„.„..„.„.„.„.„.„.„.„.„.„.„.„.„.„.„.„.„.„„.
Dlaczego C#? Dlaczego .NET?
Biblioteka klas platformy .NET
Styl języka
Łatwość konstruowania oprogramowania
Kod zarządzany
Ciągłość i „ekosystem" Windows
C#
4 .0,
.NET
4 .0
oraz Visual Studio
2010
Podsumowanie
2. Podstawowe techniki programowania
Początki
Przestrzenie nazw i typy
Projekty i solucje
„„„„„„„„„„„„„„„„„„„„„„„.„„„„„„„„„„„.
29
29
32
37
42
43
44
45
46
52
55
55
56
58
62
64
65
67
69
70
Komentarze, regiony oraz czytelność
Nieprawidłowe komentarze
Komentarze dokumentujące XML
Zmienne
Typy zmiennych
Wyrażenia i instrukcje
Instrukcje przypisania
Operatory inkrementacji i dekrementacji
Instrukcje sterowania przepływem i wyboru
Instrukcje if
Instrukcje switch oraz case
Instrukcje iteracji
Instrukcje foreach
Instrukcje for
Instrukcje while oraz do
Przerywanie wykonywania pętli
3
Metody
Podsumowanie
71
74
„„„„„„„„„„„„„„„„„„„„„„
3. Wyodrębnianie idei przy wykorzystan iu klas i struktur
Dziel i rządź
Wyodrębnianie idei w formie metod
Wyodrębnianie idei przy użyciu obiektów i klas
Definiowanie klas
Reprezentowanie stanu przy użyciu właściwości
Poziomy ochrony
Inicjalizacja przy użyciu konstruktora
Pola: miejsca do zapisywania danych
Pola mogą się zmieniać, lecz stałe nie
Pola i właściwości tylko do odczytu
Typ enum - powiązane ze sobą stałe
Typy wartościowe i referencyjne
77
77
77
80
81
82
84
86
90
92
93
96
100
105
105
106
108
112
115
116
117
119
Zbyt wiele konstruktorów, Panie Mozart
Przeciążanie
Metody przeciążone oraz domyślne parametry nazwane
Inicjalizatory obiektów
Definiowanie metod
Deklarowanie metod statycznych
Pola i właściwości statyczne
Konstruktory statyczne
Podsumowanie
4. Rozszerzalność i pol imorfizm
. „ . „ . „ . „ . „ . „ „ . „ . „ . „ .. „ „ . „ . „ . „ . „ . „ . „ . „ . „ . „ . „ . „ . „ . „ . „ . „ . „ .
121
122
124
126
127
129
132
134
136
138
144
144
149
149
152
153
157
158
Tworzenie asocjacji poprzez kompozycję i agregację
Dziedziczenie i polimorfizm
Zastępowanie metod w klasach pochodnych
Ukrywanie składowych klasy bazowej przy użyciu new
Zastępowanie metod przy użyciu modyfikatorów virtual i override
Dziedziczenie i ochrona
Wywoływanie metod klasy bazowej
Dotąd i ani kroku dalej: modyfikator sealed
Wymuszanie przesłaniania - metody abstrakcyjne
Wszystkie typy dziedziczą po klasie Object
Pakowanie i rozpakowywanie typów wartościowych
C# nie obsługuje wielokrotnego dziedziczenia implementacji
C# obsługuje wielokrotne dziedziczenie interfejsów
Tworzenie jednych interfejsów na bazie innych
Jawna implementacja interfejsów
Ostateczne rozwiązanie: sprawdzanie typów podczas wykonywania programu
Podsumowanie
4
Spis treści
5. Delegacje - łatwość komponowania i rozszerzal ność
Kompozycja funkcyjna wykorzystująca delegacje
Typ Action<T> - akcje ogólne
Predicate<T> - predykaty ogólne
Stosowanie metod anonimowych
Tworzenie delegacji przy użyciu wyrażeń lambda
Delegacje we właściwościach
Ogólne delegacje do funkcji
Informowanie klientów za pomocą zdarzeń
Udostępnianie dużej liczby zdarzeń
Podsumowanie
„„„„„„„„„„„„„„„„„„„„„
159
166
172
175
177
178
180
182
186
194
197
6. Obsługa błędów
„.„.„.„.„.„.„.„.„.„.. „.„.„.„.„.„.„. „.„.„.„.„.„.„.„.„.„.„.„.„.„.„.„.„
.. 199
204
207
213
214
219
226
227
230
232
Kiedy i jak uznać niepowodzenie
Zwracanie kodu błędu
Debugowanie wartości zwracanych
Wyjątki
Obsługa wyjątków
Kiedy są wykonywane bloki finally?
Określanie, jakie wyjątki będą przechwytywane
Wyjątki niestandardowe
Podsumowanie
7. Tabl ice i l isty
„.„.„.„.„.„.„.„.„.. „.„.„.„.„.„.„.„.„.„.„.„.„.„.„.„.„.„.„.„.„.„.„.„.„.„„„.
233
233
234
237
242
247
254
257
264
264
268
274
Tablice
Tworzenie i inicjalizacja
Własne typy w tablicach
Składowe tablic
Wielkość tablic
List<T>
Niestandardowe indeksatory
Wyszukiwanie i sortowanie
Kolekcje i polimorfizm
Tworzenie własnych implementacji IEnumerable<T>
Podsumowanie
8.
LINQ
.„.„.„.„.„.„.„.„.„.„.„.„.„.„.„.„.„.„.„.„.„.„.„.....„.„.„.„.„.„.„.„.„.„.„.„.„.„.„„.„.
275
275
277
278
280
281
281
283
284
Wyrażenia zapytań
Wyrażenia zapytań a wywołania metod
Metody rozszerzeń a LINQ
Klauzule let
Koncepcje i techniki LINQ
Delegacje i wyrażenia lambda
Styl funkcyjny i kompozycja
Wykonywanie opóźnione
Spis treści
5
Operatory LINQ
Filtrowanie
Porządkowanie
Konkatenacja
Grupowanie
Projekcje
Spinanie
Robimy się wybredni
Testowanie całej kolekcji
Agregacja
Operacje na zbiorach
Łączenie
Konwersje
Podsumowanie
285
285
286
289
289
291
298
299
300
302
304
304
305
306
9. Klasy kolekcji
.„.„.„.„.„••„.„.„.„.„.„.„.„.„.„.„.„.„.„.„.„.„.„.„.„.„.„.„.„.„.„••„.„.„.„„.
307
307
309
315
317
318
319
320
321
322
Słowniki
Popularne zastosowania słowników
IDictionary<TKey, TValue>
Słowniki i LINQ
HashSet oraz SortedSet
Kolejki
Listy połączone
Stosy
Podsumowanie
10. Łańcuchy znaków
.„.„.„.„.„.„.„.„.„.„.„.„.„.„.„••„. „.„.„.„.„.„.„.„.„.„.„.„.„.„.„.„.„••
323
324
325
326
327
330
331
337
340
343
345
346
348
349
349
351
352
354
355
Czym są łańcuchy znaków?
Typy String i Char
Literały łańcuchowe i znakowe
Oznaczanie znaków specjalnych
Formatowanie wyświetlanych danych
Standardowe łańcuchy formatowania liczb
Niestandardowe łańcuchy formatujące
Daty i godziny
W drugą stronę - konwersja łańcuchów na dane innych typów
Złożone formatowanie przy użyciu metody String.Format
Wrażliwość na ustawienia kulturowe
Poznawanie reguł formatowania
Uzyskiwanie dostępu do znaków na podstawie indeksów
Łańcuchy znaków są niezmienne
Pobieranie ciągu znaków
Składanie łańcuchów znaków
Ponowne dzielenie łańcuchów
Wielkie i małe li tery
6
Spis treści
Zgłoś jeśli naruszono regulamin