C# 8.0 w pigułce
C#
jest od początku rozwijany w konsekwentny, przemyślany
sposób, a każda nowa funkcjonalność idealnie integruje się z
resztą języka. W efekcie łączy on nowoczesność i bezpieczeństwo. Wersja
8.0 jest kolejną poważną aktualizacją tego języka. Zapewnia
wysokopoziomowe abstrakcje, między innymi wyrażenia, zapytania i
kontynuacje asynchroniczne, ale także udostępnia niskopoziomowe
mechanizmy pozwalające osiągnąć maksymalną wydajność aplikacji dzięki
wykorzystaniu takich konstrukcji jak własne typy wartościowe
programisty czy opcjonalne wskaźniki. Ceną, jaką programista płaci za
ten rozwój, jest konieczność ciągłej nauki.
To
kolejne, przejrzane i zaktualizowane wydanie doskonałego podręcznika
dla programistów.
Znalazły
się tu zwięzłe i dokładne informacje na temat języka C#, Common
Language Runtime (CLR) oraz platformy .NET Core. Zaprezentowano
precyzyjne opisy pojęć i konkretne przypadki użycia, a
poszczególne zagadnienia potraktowano dogłębnie i od strony
praktycznej. Sporo uwagi poświęcono dość trudnym tematom, jak
współbieżność, bezpieczeństwo i dostęp do funkcji systemu
operacyjnego, przy czym nie zaniedbano kwestii czytelności i nie
spłycono informacji. Nowe składniki języka C# 8.0 i związanej z nim
platformy specjalnie oznaczono, dzięki czemu to wydanie może też służyć
jako podręcznik do C# 7.0.
W książce między innymi:
- składnia C#, definiowanie
zmiennych, wskaźniki, domknięcia i wzorce
- tajniki LINQ i praca na
danych
- programowanie
współbieżne i asynchroniczne
- praca z wątkami i
programowanie równoległe
- narzędzia platformy .NET
oraz kompilator Roslyn
Wstęp
11
1.
Wprowadzenie
do C# i .NET Core 17
Obiektowość 17
Bezpieczeństwo typów 18
Zarządzanie pamięcią 19
Platformy 19
C# i Common Language Runtime 20
Frameworki i biblioteki klas bazowych 20
Stare i niszowe środowiska 22
Windows Runtime 23
Historia C# w pigułce 24
2.
Podstawy
języka C# 37
Pierwszy program w języku C# 37
Składnia 40
Podstawy typów 43
Typy liczbowe 51
Typ logiczny i operatory 58
Łańcuchy znaków i pojedyncze znaki 60
Tablice 62
Zmienne i parametry 67
Wyrażenia i operatory 78
Operatory null 82
Instrukcje 84
Przestrzenie nazw 93
3.
Tworzenie
typów w języku C# 101
Klasy 101
Dziedziczenie 117
Typ object 126
Struktury 130
Modyfikatory dostępu 132
Interfejsy 134
Wyliczenia 140
Typy zagnieżdżone 143
Typy generyczne 145
4.
Zaawansowane
elementy języka C# 157
Delegaty 157
Zdarzenia 165
Wyrażenia lambda 172
Metody anonimowe 176
Instrukcje try i wyjątki 176
Wyliczenia i iteratory 185
Typy wartościowe dopuszczające wartość null 189
Typy referencyjne dopuszczające wartość null (C# 8) 195
Metody rozszerzające 197
Typy anonimowe 200
Krotki 201
Wzorce 205
Atrybuty 208
Atrybuty informacji wywołującego 210
Wiązanie dynamiczne 211
Przeciążanie operatorów 219
Niebezpieczny kod i wskaźniki 222
Dyrektywy preprocesora 226
Dokumentacja XML 228
5.
Ogólny
zarys platformy 233
.NET Standard 233
Wersje środowiska i C# 236
Zestawy referencyjne 237
CLR i BCL 237
Frameworki aplikacji 241
6.
Podstawowe
wiadomości o platformie 245
Obsługa łańcuchów i tekstu 245
Data i godzina 258
Daty i strefy czasowe 265
Formatowanie i parsowanie obiektów DateTime 270
Standardowe łańcuchy formatu i flagi parsowania 275
Inne mechanizmy konwersji 282
Globalizacja 286
Praca z liczbami 287
Wyliczenia 291
Struktura Guid 294
Sprawdzanie równości 295
Określanie kolejności 305
Klasy pomocnicze 308
7.
Kolekcje
313
Przeliczalność 313
Interfejsy ICollection i IList 320
Klasa Array 323
Listy, kolejki, stosy i zbiory 331
Słowniki 340
Kolekcje i pośredniki z możliwością dostosowywania 346
Niezmienne kolekcje 351
Dołączanie protokołów równości i porządkowania 355
8.
Zapytania
LINQ 361
Podstawy 361
Składnia płynna 363
Wyrażenia zapytań 369
Wykonywanie opóźnione 373
Podzapytania 379
Tworzenie zapytań złożonych 382
Strategie projekcji 386
Zapytania interpretowane 388
EF Core 394
Budowanie wyrażeń zapytań 405
9.
Operatory
LINQ 411
Informacje ogólne 412
Filtrowanie 415
Projekcja 419
Łączenie 430
Porządkowanie 437
Grupowanie 440
Operatory zbiorów 443
Metody konwersji 444
Operatory elementów 447
Metody agregacyjne 449
Kwantyfikatory 453
Metody generujące 454
10.
LINQ
to XML 457
Przegląd architektury 457
Informacje ogólne o X-DOM 458
Tworzenie drzewa X-DOM 461
Nawigowanie i wysyłanie zapytań 464
Modyfikowanie drzewa X-DOM 468
Praca z wartościami 471
Dokumenty i deklaracje 474
Nazwy i przestrzenie nazw 477
Adnotacje 482
Projekcja do X-DOM 483
11.
Inne
technologie XML i JSON 487
Klasa XmlReader 487
Klasa XmlWriter 494
Typowe zastosowania klas XmlReader i XmlWriter 496
Praca z formatem JSON 501
12.
Zwalnianie
zasobów i mechanizm usuwania nieużytków 509
IDisposable, Dispose i Close 509
Automatyczne usuwanie nieużytków 515
Finalizatory 518
Jak działa mechanizm usuwania nieużytków? 522
Wycieki pamięci zarządzanej 529
Słabe odwołania 532
13.
Diagnostyka 537
Kompilacja warunkowa 537
Debugowanie i klasy monitorowania 541
Integracja z debuggerem 544
Procesy i wątki procesów 545
Klasy StackTrace i StackFrame 546
Dziennik zdarzeń Windows 548
Liczniki wydajności 550
Klasa Stopwatch 554
Międzyplatformowe narzędzia diagnostyczne 555
14.
Współbieżność i asynchroniczność
559
Wprowadzenie 559
Wątki 560
Zadania 576
Reguły asynchroniczności 584
Funkcje asynchroniczne w języku C# 589
Wzorce asynchroniczności 608
Przestarzałe wzorce 616
15.
Strumienie i wejście-wyjście
621
Architektura strumienia 621
Użycie strumieni 623
Adapter strumienia 637
Kompresja strumienia 645
Praca z plikami w postaci archiwum ZIP 648
Operacje na plikach i katalogach 649
Plikowe operacje wejścia-wyjścia w UWP 658
Bezpieczeństwo systemu operacyjnego 663
Mapowanie plików w pamięci 665
16.
Sieć 671
Architektura sieci 671
Adresy i porty 674
Adresy URI 675
Klasy po stronie klienta 677
Praca z HTTP 689
Tworzenie serwera HTTP 693
Użycie FTP 696
Użycie DNS 698
Wysyłanie poczty elektronicznej za pomocą SmtpClient 699
Użycie TCP 700
Otrzymywanie poczty elektronicznej POP3 za pomocą TCP 703
TCP w UWP 705
17.
Serializacja 707
Koncepcje serializacji 707
Serializator XML 711
Serializator JSON 720
Serializator binarny 729
Atrybuty serializacji binarnej 730
Serializacja binarna przy użyciu interfejsu ISerializable 732
18.
Zestawy 737
Co znajduje się w zestawie? 737
Silne nazwy i podpisywanie zestawu 741
Nazwy zestawów 743
Technologia Authenticode 745
Zasoby i zestawy satelickie 748
Ładowanie, znajdowanie i izolowanie zestawów 755
19.
Refleksja i metadane 775
Refleksja i aktywacja typów 776
Refleksja i wywoływanie składowych 782
Refleksja dla zestawów 794
Praca z atrybutami 795
Generowanie dynamicznego kodu 799
Emitowanie zestawów i typów 806
Emitowanie składowych typów 809
Emitowanie generycznych typów i klas 814
Kłopotliwe cele emisji 816
Parsowanie IL 819
20.
Programowanie
dynamiczne 825
Dynamiczny system wykonawczy języka 825
Unifikacja typów liczbowych 827
Dynamiczne wybieranie przeciążonych składowych 828
Implementowanie obiektów dynamicznych 834
Współpraca z językami dynamicznymi 837
21.
Kryptografia 839
Informacje ogólne 839
Windows Data Protection 839
Obliczanie skrótów 841
Szyfrowanie symetryczne 843
Szyfrowanie kluczem publicznym i podpisywanie 848
22.
Zaawansowane
techniki wielowątkowości 853
Przegląd technik synchronizacji 854
Blokowanie wykluczające 854
Blokady i bezpieczeństwo ze względu na wątki 862
Blokowanie bez wykluczania 868
Sygnalizacja przy użyciu uchwytów zdarzeń oczekiwania 874
Klasa Barrier 881
Leniwa inicjalizacja 882
Pamięć lokalna wątku 885
Zegary 888
23.
Programowanie
równoległe 893
Dlaczego PFX? 894
PLINQ 897
Klasa Parallel 909
Równoległe wykonywanie zadań 915
Klasa AggregateException 924
Kolekcje współbieżne 927
Klasa BlockingCollection 929
24.
Struktury Spani Memory 933
Struktura Span i plasterkowanie 934
Struktura Memory 937
Enumeratory działające tylko do przodu 938
Praca z pamięcią alokowaną na stosie i niezarządzaną 940
25.
Współdziałanie
macierzyste i poprzez COM 943
Odwołania do natywnych bibliotek DLL 943
Szeregowanie 944
Wywołania zwrotne z kodu niezarządzanego 948
Symulowanie unii C 949
Pamięć współdzielona 950
Mapowanie struktury na pamięć niezarządzaną 952
Współpraca COM 956
Wywołanie komponentu COM z C# 957
Osadzanie typów współpracujących 961
Udostępnianie obiektów C# COM 962
26.
Wyrażenia
regularne 965
Podstawy wyrażeń regularnych 965
Kwantyfikatory 970
Asercje o zerowej wielkości 971
Grupy 974
Zastępowanie i dzielenie tekstu 975
Receptury wyrażeń regularnych 977
Leksykon języka wyrażeń regularnych 980
27.
Kompilator Roslyn 985
Architektura Roslyn 985
Drzewa składni 986
Kompilacja i model semantyczny 1001
1016
styron, oprawa twarda