C# 6.0 : kompletny przewodnik dla praktyków / Mark Michaelis, Eric

Transkrypt

C# 6.0 : kompletny przewodnik dla praktyków / Mark Michaelis, Eric
C# 6.0 : kompletny przewodnik dla praktyków / Mark Michaelis, Eric
Lippert. – Gliwice, cop. 2016
Spis treści
Spis rysunków
11
Spis tabel
13
Przedmowa
15
Wprowadzenie
17
Podziękowania
27
O autorach
29
1 Wprowadzenie do języka C#
Witaj, świecie
Podstawy składni języka C#
Dane wejściowe i wyjściowe w konsoli
31
32
33
44
2. Typy danych
Podstawowe typy liczbowe
Inne podstawowe typy
Wartości null i void
Kategorie typów
Modyfikator umożliwiający stosowanie wartości null
Konwersje typów danych
Tablice
59
59
67
78
81
83
84
89
3. Operatory i przepływ sterowania
Operatory
Zarządzanie przepływem sterowania
Bloki kodu ({})
Bloki kodu, zasięgi i przestrzenie deklaracji
Wyrażenia logiczne
Operatory bitowe (<<, >>, |, &, ^, ~)
Instrukcje związane z przepływem sterowania ciąg dalszy
Instrukcje skoku
Dyrektywy preprocesora języka C#
105
106
119
124
126
127
135
140
150
156
4. Metody i parametry
Wywoływanie metody
Deklarowanie metody
165
166
172
Dyrektywa using
Zwracane wartości i parametry metody Main()
Zaawansowane parametry metod
Rekurencja
Przeciążanie metod
Parametry opcjonalne
Podstawowa obsługa błędów z wykorzystaniem wyjątków
176
181
183
190
193
195
199
5. Klasy
Deklarowanie klasy i tworzenie jej instancji
Pola instancji
Metody instancji
Stosowanie słowa kluczowego this
Modyfikatory dostępu
Właściwości
Konstruktory
Składowe statyczne
Metody rozszerzające
Hermetyzacja danych
Klasy zagnieżdżone
Klasy częściowe
213
216
218
221
222
228
230
244
253
262
263
266
268
6. Dziedziczenie
Tworzenie klas pochodnych
Przesłanianie składowych z klas bazowych
Klasy abstrakcyjne
Wszystkie klasy są pochodne od System.Object
Sprawdzanie typu za pomocą operatora is
Konwersja z wykorzystaniem operatora as
273
274
284
294
299
301
301
7 Interfejsy
Wprowadzenie do interfejsów
Polimorfizm oparty na interfejsach
Implementacja interfejsu
Przekształcanie między klasą z implementacją i interfejsami
Dziedziczenie interfejsów
Dziedziczenie po wielu interfejsach
Metody rozszerzające i interfejsy
Implementowanie wielodziedziczenia za pomocą interfejsów
Zarządzanie wersjami
Interfejsy a klasy
Interfejsy a atrybuty
303
304
305
309
314
315
317
317
319
321
323
324
8. Typy bezpośrednie
Struktury
Opakowywanie
Wyliczenia
327
331
336
343
9. Dobrze uformowane typy
Przesłanianie składowych z klasy object
Przeciążanie operatorów
Wskazywanie innych podzespołów
Definiowanie przestrzeni nazw
Komentarze XML-owe
Odzyskiwanie pamięci
Porządkowanie zasobów
Leniwe inicjowanie
355
355
365
373
377
381
385
387
394
10. Obsługa wyjątków
Wiele typów wyjątków
Przechwytywanie wyjątków
Ogólny blok catch
Wskazówki związane z obsługą wyjątków
Definiowanie niestandardowych wyjątków
Ponowne zgłaszanie opakowanego wyjątku
397
397
400
403
405
407
411
11 Typy generyczne
Język C# bez typów generycznych
Wprowadzenie do typów generycznych
Ograniczenia
Metody generyczne
Kowariancja i kontrawariancja
Wewnętrzne mechanizmy typów generycznych
415
416
420
430
442
446
452
12. Delegaty i wyrażenia lambda
Wprowadzenie do delegatów
Wyrażenia lambda
Metody anonimowe
Delegaty ogólnego przeznaczenia System.Func i System.Action
457
458
466
471
473
13. Zdarzenia
Implementacja wzorca „obserwator" za pomocą delegatów typu multicast
Zdarzenia
489
490
503
14. Interfejsy kolekcji ze standardowymi operatorami kwerend
Typy anonimowe i zmienne lokalne o niejawnie określanym typie
Inicjatory kolekcji
Interfejs IEnumerable<T> sprawia, że klasa staje się kolekcją
Standardowe operatory kwerend
513
514
519
522
527
15. Technologia LINQ i wyrażenia z kwerendami
Wprowadzenie do wyrażeń z kwerendami
Wyrażenia z kwerendą to tylko wywołania metod
557
558
573
16. Tworzenie niestandardowych kolekcji
Inne interfejsy implementowane w kolekcjach
Podstawowe klasy kolekcji
Udostępnianie indeksera
Zwracanie wartości null lub pustej kolekcji
Iteratory
577
578
580
594
598
598
17. Refleksja, atrybuty i programowanie dynamiczne
Mechanizm refleksji
Operator nameof
Atrybuty
Programowanie z wykorzystaniem obiektów dynamicznych
613
614
623
624
644
18. Wielowątkowość
Podstawy wielowątkowości
Używanie klasy System.Threading
Zadania asynchroniczne
Anulowanie zadania
Wzorzec obsługi asynchroniczności za pomocą zadań
Równoległe wykonywanie iteracji pętli
Równoległe wykonywanie kwerend LINQ
655
657
663
670
686
692
713
721
19. Synchronizowanie wątków
Po co stosować synchronizację?
Zegary
727
728
752
20. Współdziałanie między platformami i niezabezpieczony kod
Mechanizm P/Invoke
Wskaźniki i adresy
Wykonywanie niezabezpieczonego kodu za pomocą delegata
Używanie bibliotek Windows Runtime w języku C#
755
756
766
775
776
21. Standard CLI
Definiowanie standardu CLI
Implementacje standardu CLI
Kompilacja kodu w języku C# na kod maszynowy
Środowisko uruchomieniowe
Domeny aplikacji
Podzespoły, manifesty i moduły
Język Common Intermediate Language
Common Type System
Common Language Specification
Base Class Library
Metadane
781
782
783
784
786
790
790
792
793
794
794
794
A Pobieranie i instalowanie kompilatora języka C#
oraz platformy CLI
Platforma .NET dla systemu Windows
Platforma .NET w systemach OS X i Linux
799
799
801
В Kod źródłowy programu do gry w kółko i krzyżyk
803
С Wielowątkowość bez biblioteki TPL i przed wersją C# 6.0
Wzorzec АРМ
Asynchroniczne wywoływanie delegatów
Wzorzec EAP asynchroniczność oparta na zdarzeniach
Wzorzec wykorzystujący roboczy wątek działający w tle
Kierowanie wywołań do interfejsu użytkownika w systemie Windows
809
810
821
824
827
830
D Zegary przed wprowadzeniem w wersji C# 5.0 słów kluczowych
async i await
835
Skorowidz
841
oprac. BPK