C# 6.0 w pigułce / Joseph Albahari, Ben Albahari. – Gliwice, cop

Transkrypt

C# 6.0 w pigułce / Joseph Albahari, Ben Albahari. – Gliwice, cop
C# 6.0 w pigułce / Joseph Albahari, Ben Albahari. – Gliwice, cop. 2016
Spis treści
Wstęp
11
1 Wprowadzenie do C# i .NET Framework
Obiektowość
Bezpieczeństwo typów
Zarządzanie pamięcią
Platformy
Powiązania C# z CLR
CLR i .NET Framework
C# i środowisko wykonawcze systemu Windows
Co nowego w C# 6.0
Co było nowego w C# 5.0
Co było nowego w C# 4.0
Co było nowego w C# 3.0
17
17
18
19
19
19
20
21
22
24
24
25
2 Podstawy języka C#
Pierwszy program w języku C#
Składnia
Podstawy typów
Typy liczbowe
Typ logiczny i operatory
Łańcuchy znaków i pojedyncze znaki
Tablice
Zmienne i parametry
Wyrażenia i operatory
Operatory null
Instrukcje
Przestrzenie nazw
27
27
30
33
42
49
51
53
57
65
70
71
79
3 Tworzenie typów w języku C#
Klasy
Dziedziczenie
Typ object
Struktury
Modyfikatory dostępu
Interfejsy
Wyliczenia
Typy zagnieżdżone
Typy generyczne
87
87
101
109
113
114
116
121
124
125
4 Zaawansowane elementy języka C#
Delegaty
Zdarzenia
Wyrażenia lambda
Metody anonimowe
Instrukcje try i wyjątki
Wyliczanie i iteratory
Typy wartościowe dopuszczające wartość null
Przeciążanie operatorów
Metody rozszerzające
Typy anonimowe
Wiązanie dynamiczne
Atrybuty
Atrybuty informacji wywołującego
Niebezpieczny kod i wskaźniki
Dyrektywy preprocesora
Dokumentacja XML
139
139
147
153
157
158
166
171
177
180
182
183
191
193
194
198
200
5 Ogólny zarys platformy
CLR i rdzeń platformy
Technologie praktyczne
205
207
212
6 Podstawowe wiadomości o platformie
Obsługa łańcuchów i tekstu
Data i godzina
Daty i strefy czasowe
Formatowanie i parsowanie
Standardowe łańcuchy formatu i flagi parsowania
Inne mechanizmy konwersji
Globalizacja
Praca z liczbami
Wyliczenia
Krotki
Struktura Guid
Sprawdzanie równości
Określanie kolejności
Klasy pomocnicze
219
219
232
239
244
250
257
261
262
266
269
271
271
281
284
7 Kolekcje
Przeliczalność
Interfejsy ICollection i IList
Klasa Array
Listy, kolejki, stosy i zbiory
Słowniki
Kolekcje i pośredniki z możliwością dostosowywania
Dołączanie protokołów równości i porządkowania
289
289
296
300
308
316
322
328
8 Zapytania LINQ
Podstawy
Składnia płynna
Wyrażenia zapytań
Wykonywanie opóźnione
Podzapytania
Tworzenie zapytań złożonych
Strategie projekcji
Zapytania interpretowane
LINQ to SQL i Entity Framework
Budowanie wyrażeń zapytań
335
335
337
343
347
353
356
360
362
368
381
9 Operatory LINQ
Informacje ogólne
Filtrowanie
Projekcja
Łączenie
Porządkowanie
Grupowanie
Operatory zbiorów
Metody konwersji
Operatory elementów
Metody agregacyjne
Kwantyfikatory
Metody generujące
387
388
391
395
406
413
416
419
420
423
425
429
430
10 LINQ to XML
Przegląd architektury
Informacje ogólne o X-DOM
Tworzenie drzewa X-DOM
Nawigowanie i wysyłanie zapytań
Modyfikowanie drzewa X-DOM
Praca z wartościami
Dokumenty i deklaracje
Nazwy i przestrzenie nazw
Adnotacje
Projekcja do X-DOM
433
433
434
437
440
444
447
450
453
458
459
11 Inne technologie XML
Klasa XmlReader
Klasa XmlWriter
Typowe zastosowania klas XmlReader i XmlWriter
XSD i sprawdzanie poprawności schematów
XSLT
465
466
474
476
480
483
12 Zwalnianie zasobów i mechanizm usuwania nieużytków
IDisposable, Dispose i Close
485
485
Automatyczne usuwanie nieużytków
Finalizatory
Jak działa mechanizm usuwania nieużytków?
Wycieki pamięci zarządzanej
Słabe odwołania
491
493
498
503
507
13 Diagnostyka i kontrakty kodu
Kompilacja warunkowa
Debugowanie i klasy monitorowania
Ogólne omówienie kontraktów kodu
Warunki początkowe
Warunki końcowe
Asercje i metody inwariantów obiektu
Kontrakty w interfejsach i metodach abstrakcyjnych
Rozwiązywanie problemów z awariami podczas użycia kontraktów
Selektywne egzekwowanie kontraktów
Statyczne sprawdzenie kontraktu
Integracja z debuggerem
Procesy i wątki procesów
Klasy StackTrace i StackFrame
Dziennik zdarzeń Windows
Liczniki wydajności
Klasa Stopwatch
511
511
515
518
523
527
529
531
532
534
536
538
539
540
542
544
549
14 Współbieżność i asynchroniczność
Wprowadzenie
Wątkowanie
Zadania
Reguły asynchroniczności
Funkcje asynchroniczne w języku C#
Wzorce asynchroniczności
Wzorce uznane za przestarzałe
551
551
552
569
577
582
598
606
15 Strumienie i wejście-wyjście
Architektura strumienia
Użycie strumieni
Adapter strumienia
Kompresja strumienia
Praca z plikami w postaci archiwum ZIP
Operacje na plikach i katalogach
Plikowe operacje wejścia-wyjścia w środowisku uruchomieniowym
Windows
Mapowanie plików w pamięci
Odizolowany magazyn danych
611
611
613
626
634
636
637
16 Sieć
Architektura sieci
661
661
648
650
653
Adresy i porty
Adresy URI
Klasy po stronie klienta
Praca z HTTP
Utworzenie serwera HTTP
Użycie FTP
Użycie DNS
Wysyłanie poczty elektronicznej za pomocą SmtpClient
Użycie TCP
Otrzymywanie poczty elektronicznej POP3 za pomocą TCP
TCP w środowisku uruchomieniowym Windows
664
665
667
680
685
688
690
691
692
695
697
17 Serializacja
Koncepcje serializacji
Serializacja kontraktu danych
Kontrakty danych i kolekcje
Rozszerzenie kontraktu danych
Serializacja binarna
Atrybuty serializacji binarnej
Serializacja binarna za pomocą ISerializable
Serializacja XML
699
699
703
713
715
718
720
724
727
18 Podzespoły
Co znajduje się w podzespole?
Silne nazwy i podpisywanie podzespołu
Nazwy podzespołów
Technologia Authenticode
Global Assembly Cache
Zasoby i podzespoły satelickie
Wyszukiwanie i wczytywanie podzespołów
Wdrażanie podzespołów poza katalogiem bazowym
Umieszczenie w pojedynczym pliku wykonywalnym
Praca z podzespołami, do których nie ma odwołań
737
737
742
745
748
751
754
762
768
769
771
19 Refleksje i metadane
Refleksje i aktywacja typów
Refleksje i wywoływanie składowych
Refleksje dla podzespołów
Praca z atrybutami
Generowanie dynamicznego kodu
Emitowanie podzespołów i typów
Emitowanie składowych typów
Emitowanie generycznych typów i klas
Kłopotliwe cele emisji
Parsowanie IL
773
774
780
792
793
799
805
809
814
816
819
20 Programowanie dynamiczne
Dynamiczny system wykonawczy języka
Unifikacja typów liczbowych
Dynamiczne wybieranie przeciążonych składowych
Implementowanie obiektów dynamicznych
Współpraca z językami dynamicznymi
825
825
827
828
833
836
21 Bezpieczeństwo
Uprawnienia
Zabezpieczenia dostępu kodu
Dopuszczanie częściowo zaufanych wywołujących
Model transparentności
Ograniczanie innego zestawu
Zabezpieczenia systemu operacyjnego
Tożsamości i role
Kryptografia
Windows Data Protection
Obliczanie skrótów
Szyfrowanie symetryczne
Szyfrowanie kluczem publicznym i podpisywanie
839
839
843
846
848
856
860
862
864
864
865
867
871
22 Zaawansowane techniki wielowątkowości
Przegląd technik synchronizacji
Blokowanie wykluczające
Blokady i bezpieczeństwo ze względu na wątki
Blokowanie bez wykluczania
Sygnalizacja przy użyciu uchwytów zdarzeń oczekiwania
Klasa Barrier
Leniwa inicjalizacja
Pamięć lokalna wątku
Metody Interrupt i Abort
Metody Suspend i Resume
Zegary
877
878
878
886
892
897
905
906
909
911
912
913
23 Programowanie równoległe
Dlaczego PFX?
PLINQ
Klasa Parallel
Równoległe wykonywanie zadań
Klasa AggregateException
Kolekcje współbieżne
Klasa BlockingCollection<T>
917
917
920
933
939
948
951
954
24 Domeny aplikacji
Architektura domeny aplikacji
Tworzenie i likwidowanie domen aplikacji
Posługiwanie się wieloma domenami aplikacji
959
959
961
962
Metoda DoCallBack
Monitorowanie domen aplikacji
Domeny i wątki
Dzielenie danych między domenami
964
965
965
967
25 Współpraca
Odwołania do natywnych bibliotek DLL
Szeregowanie
Wywołania zwrotne z kodu niezarządzanego
Symulowanie unii С
Pamięć współdzielona
Mapowanie struktury na pamięć niezarządzaną
Współpraca COM
Wywołanie komponentu COM z C#
Osadzanie typów współpracujących
Główne moduły współpracujące
Udostępnianie obiektów C# dla COM
973
973
974
977
977
978
981
985
986
990
990
991
26 Wyrażenia regularne
Podstawy wyrażeń regularnych
Kwantyfikatory
Asercje o zerowej wielkości
Grupy
Zastępowanie i dzielenie tekstu
Receptury wyrażeń regularnych
Leksykon języka wyrażeń regularnych
993
994
998
999
1002
1003
1005
1008
27 Kompilator Roslyn
Architektura Roslyn
Drzewa składni
Kompilacja i model semantyczny
1013
1014
1015
1030
Skorowidz
1041
oprac. BPK