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