Szczegóły ebooka

C# 8.0. Kompletny przewodnik dla praktyków. Wydanie VII

C# 8.0. Kompletny przewodnik dla praktyków. Wydanie VII

Mark Michaelis

Ebook

C# jest jednym z najlepszych dzieł Microsoftu - cechuje go dojrzałość, prostota i nowoczesność. Został zaprojektowany jako język obiektowy i konsekwentnie jest rozwijany. Służy do tworzenia aplikacji sieciowych, mikrousług, aplikacji desktopowych, oprogramowania dla urządzeń mobilnych i internetu rzeczy. Ponadto C# jest językiem otwartym, pozwalającym na pisanie kodu bezpiecznego, przejrzystego, wydajnego i prostego w konserwacji. W wersji 8.0 pojawiły się funkcjonalności, które jeszcze bardziej usprawniają pracę programisty.

To siódme, zaktualizowane i uzupełnione wydanie jednego z najlepszych podręczników programowania, docenianego przez programistów na każdym poziomie zaawansowania. Poza znakomitym samouczkiem języka C# znalazły się tu informacje o poszczególnych metodykach programowania. Książka zawiera także omówienie nowości w C#: typów referencyjnych dopuszczających wartość null, indeksów, przedziałów, rozbudowanego dopasowywania do wzorca, strumieni asynchronicznych i innych. Treść jest uporządkowana i przejrzysta, co nadaje podręcznikowi przystępną formę, a zawarte w nim wskazówki pomagają w ograniczeniu liczby błędów w kodzie.

W książce między innymi:

  • istotne konstrukcje w C#
  • techniki programowania obiektowego w C#, w tym klasy, dziedziczenie i interfejsy
  • typy generyczne, delegaty, wyrażenia lambda oraz refleksje i atrybuty
  • strumienie asynchroniczne
  • przetwarzanie równoległe i wielowątkowość
  • współdziałanie z kodem niezarządzanym

C#. Praktyczne rozwiązania rzeczywistych problemów!


Spis rysunków 11

Spis tabel 13

Przedmowa 15

Wprowadzenie 17

O autorze 28

Podziękowania 29

1. Wprowadzenie do języka C# 31

  • Witaj, świecie 32
  • Podstawy składni języka C# 42
  • Korzystanie ze zmiennych 49
  • Dane wejściowe i wyjściowe w konsoli 52
  • Wykonywanie kodu w środowisku zarządzanym iplatforma CLI 59
  • Różne wersje platformy .NET 63
  • Podsumowanie 67

2. Typy danych 69

  • Podstawowe typy liczbowe 69
  • Inne podstawowe typy 77
  • Konwersje typów danych 91
  • Podsumowanie 97

3. Jeszcze o typach danych 99

  • Kategorie typów 99
  • Deklarowanie typów umożliwiających stosowanie wartości null 102
  • Zmienne lokalne z niejawnie określanym typem danych 106
  • Krotki 108
  • Tablice 114
  • Podsumowanie 130

4. Operatory i przepływ sterowania 131

  • Operatory 132
  • Zarządzanie przepływem sterowania 145
  • Bloki kodu ({}) 150
  • Bloki kodu, zasięgi i przestrzenie deklaracji 152
  • Wyrażenia logiczne 154
  • Programowanie z użyciem wartości null 158
  • Operatory bitowe (<<, >>, |, &, ^, ~) 164
  • Instrukcje związane z przepływem sterowania - ciąg dalszy 169
  • Instrukcje skoku 179
  • Dyrektywy preprocesora języka C# 184
  • Podsumowanie 191

5. Metody i parametry 193

  • Wywoływanie metody 194
  • Deklarowanie metody 199
  • Dyrektywa using 204
  • Zwracane wartości i parametry metody Main() 208
  • Zaawansowane parametry metod 211
  • Rekurencja 220
  • Przeciążanie metod 223
  • Parametry opcjonalne 226
  • Podstawowa obsługa błędów z wykorzystaniem wyjątków 229
  • Podsumowanie 241

6. Klasy 243

  • Deklarowanie klasy i tworzenie jej instancji 246
  • Pola instancji 249
  • Metody instancji 251
  • Stosowanie słowa kluczowego this 252
  • Modyfikatory dostępu 258
  • Właściwości 260
  • Konstruktory 274
  • Konstruktory a właściwości typów referencyjnych niedopuszczających wartości null 283
  • Atrybuty dopuszczające wartość null 286
  • Dekonstruktory 288
  • Składowe statyczne 290
  • Metody rozszerzające 298
  • Hermetyzacja danych 299
  • Klasy zagnieżdżone 302
  • Klasy częściowe 304
  • Podsumowanie 308

7. Dziedziczenie 309

  • Tworzenie klas pochodnych 310
  • Przesłanianie składowych z klas bazowych 318
  • Klasy abstrakcyjne 328
  • Wszystkie klasy są pochodne od System.Object 334
  • Dopasowanie do wzorca za pomocą operatora is 335
  • Dopasowanie do wzorca w wyrażeniu switch 340
  • Unikaj dopasowania do wzorca, gdy możliwy jest polimorfizm 341
  • Podsumowanie 343

8. Interfejsy 345

  • Wprowadzenie do interfejsów 346
  • Polimorfizm oparty na interfejsach 347
  • Implementacja interfejsu 351
  • Przekształcanie między klasą z implementacją i interfejsami 356
  • Dziedziczenie interfejsów 356
  • Dziedziczenie po wielu interfejsach 359
  • Metody rozszerzające i interfejsy 359
  • Zarządzanie wersjami 361
  • Metody rozszerzające a domyślne składowe interfejsu 374
  • Interfejsy a klasy abstrakcyjne 375
  • Interfejsy a atrybuty 377
  • Podsumowanie 377

9. Typy bezpośrednie 379

  • Struktury 383
  • Opakowywanie 388
  • Wyliczenia 395
  • Podsumowanie 405

10. Dobrze uformowane typy 407

  • Przesłanianie składowych z klasy object 407
  • Przeciążanie operatorów 418
  • Wskazywanie innych podzespołów 425
  • Hermetyzacja typów 431
  • Definiowanie przestrzeni nazw 433
  • Komentarze XML-owe 436
  • Odzyskiwanie pamięci 440
  • Porządkowanie zasobów 443
  • Leniwe inicjowanie 455
  • Podsumowanie 457

11. Obsługa wyjątków 459

  • Wiele typów wyjątków 459
  • Przechwytywanie wyjątków 462
  • Ponowne zgłaszanie przetwarzanego wyjątku 463
  • Ogólny blok catch 465
  • Wskazówki związane z obsługą wyjątków 466
  • Definiowanie niestandardowych wyjątków 469
  • Ponowne zgłaszanie opakowanego wyjątku 471
  • Podsumowanie 475

12. Typy generyczne 477

  • Język C# bez typów generycznych 478
  • Wprowadzenie do typów generycznych 482
  • Ograniczenia 493
  • Metody generyczne 507
  • Kowariancja i kontrawariancja 511
  • Wewnętrzne mechanizmy typów generycznych 517
  • Podsumowanie 521

13. Delegaty i wyrażenia lambda 523

  • Wprowadzenie do delegatów 524
  • Deklarowanie typu delegata 527
  • Wyrażenia lambda 534
  • Lambdy w postaci instrukcji 535
  • Metody anonimowe 539
  • Delegaty nie zapewniają równości strukturalnej 541
  • Zmienne zewnętrzne 543
  • Drzewo wyrażeń 547
  • Podsumowanie 553

14. Zdarzenia 555

  • Implementacja wzorca publikuj-subskrybuj za pomocą delegatów typu multicast 556
  • Zdarzenia 569
  • Podsumowanie 578

15. Interfejsy kolekcji ze standardowymi operatorami kwerend 579

  • Inicjatory kolekcji 580
  • Interfejs IEnumerablesprawia, że klasa staje się kolekcją 582
  • Standardowe operatory kwerend 587
  • Typy anonimowe w technologii LINQ 615
  • Podsumowanie 622

16. Technologia LINQ i wyrażenia z kwerendami 623

  • Wprowadzenie do wyrażeń z kwerendami 624
  • Wyrażenia z kwerendą to tylko wywołania metod 639
  • Podsumowanie 641

17. Tworzenie niestandardowych kolekcji 643

  • Inne interfejsy implementowane w kolekcjach 644
  • Podstawowe klasy kolekcji 646
  • Udostępnianie indeksera 661
  • Zwracanie wartości null lub pustej kolekcji 664
  • Iteratory 665
  • Podsumowanie 677

18. Refleksja, atrybuty i programowanie dynamiczne 679

  • Mechanizm refleksji 680
  • Operator nameof 689
  • Atrybuty 690
  • Programowanie z wykorzystaniem obiektów dynamicznych 705
  • Podsumowanie 714

19. Wprowadzenie do wielowątkowości 717

  • Podstawy wielowątkowości 719
  • Zadania asynchroniczne 724
  • Anulowanie zadania 741
  • Używanie przestrzeni nazw System.Threading 746
  • Podsumowanie 748

20. Programowanie z wykorzystaniem wzorca TAP 749

  • Synchroniczne wykonywanie operacji o wysokiej latencji 750
  • Asynchroniczne wywoływanie operacji o dużej latencji za pomocą biblioteki TPL 752
  • Asynchroniczność oparta na zadaniach oraz instrukcjach async i await 756
  • Dodanie możliwości zwracania typu ValueTaskw metodach asynchronicznych 761
  • Strumienie asynchroniczne 763
  • Interfejs IAsyncDisposable a deklaracje i instrukcje await using 766
  • Używanie technologii LINQ razem z interfejsem IAsyncEnumerable 767
  • Zwracanie wartości void w metodach asynchronicznych 769
  • Asynchroniczne lambdy i funkcje lokalne 772
  • Programy szeregujące zadania i kontekst synchronizacji 777
  • Modyfikatory async i await w programach z interfejsem użytkownika z systemu Windows 779
  • Podsumowanie 782

21. Równoległe iteracje 783

  • Równoległe wykonywanie iteracji pętli 783
  • Równoległe wykonywanie kwerend LINQ 791
  • Podsumowanie 796

22. Synchronizowanie wątków 797

  • Po co stosować synchronizację? 798
  • Zegary 822
  • Podsumowanie 823

23. Współdziałanie między platformami i niezabezpieczony kod 825

  • Mechanizm P/Invoke 826
  • Wskaźniki i adresy 837
  • Wykonywanie niezabezpieczonego kodu za pomocą delegata 845
  • Podsumowanie 846

24. Standard CLI 847

  • Definiowanie standardu CLI 847
  • Implementacje standardu CLI 848
  • Specyfikacja .NET Standard 851
  • Biblioteka BCL 851
  • Kompilacja kodu w języku C# na kod maszynowy 852
  • Środowisko uruchomieniowe 853
  • Podzespoły, manifesty i moduły 857
  • Język Common Intermediate Language 859
  • Common Type System 860
  • Common Language Specification 861
  • Metadane 861
  • Architektura .NET Native i kompilacja AOT 862
  • Podsumowanie 862
  • Tytuł: C# 8.0. Kompletny przewodnik dla praktyków. Wydanie VII
  • Autor: Mark Michaelis
  • Tytuł oryginału: Essential C# 8.0 (7th Edition) (Addison-Wesley Microsoft Technology Series)
  • Tłumaczenie: Tomasz Walczak
  • ISBN: 978-83-283-7568-0, 9788328375680
  • Data wydania: 2021-04-27
  • Format: Ebook
  • Identyfikator pozycji: c8kpp7
  • Wydawca: Helion