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