C# 8.0. Programowanie. Tworzenie aplikacji Windows, internetowych oraz biurowych - Helion
Tytuł oryginału: Programming C# 8.0: Build Windows, Web, and Desktop Applications
TÅ‚umaczenie: Piotr Rajca
ISBN: 978-83-283-6739-5
stron: 765, Format: 168x237, okładka: miękka
Data wydania: 2020-07-01
Księgarnia: Helion
Cena książki: 111,75 zł (poprzednio: 149,00 zł)
Oszczędzasz: 25% (-37,25 zł)
JÄ™zyk C# wciąż cechuje prostota, przy czym jego możliwoÅ›ci rosnÄ… z każdÄ… wersjÄ…. Od poczÄ…tku jest rozwijany z konsekwencjÄ…, a każda nowa funkcjonalność idealnie integruje siÄ™ z resztÄ… jÄ™zyka. W efekcie C# jest dojrzaÅ‚y, nowoczesny, wszechstronny i bezpieczny. Stanowi integralnÄ… część platformy Microsoft .NET Framework. Profesjonalni programiÅ›ci, którzy dbajÄ… o wysokÄ… jakość tworzonego kodu, uważajÄ… C# i .NET za swoje ulubione narzÄ™dzie pracy. Wersja 8.0 tego jÄ™zyka sprawia, że programowanie staje siÄ™ jeszcze bardziej efektywne i satysfakcjonujÄ…ce. PeÅ‚ne wykorzystanie tych imponujÄ…cych możliwoÅ›ci wymaga jednak mistrzowskiego opanowania subtelnoÅ›ci poszczególnych narzÄ™dzi i niuansów samego jÄ™zyka.
Ta książka zostaÅ‚a napisana z myÅ›lÄ… o doÅ›wiadczonych programistach. Podstawowe zagadnienia, takie jak klasy, polimorfizm i kolekcje, znalazÅ‚y siÄ™ w kilku pierwszych rozdziaÅ‚ach, jednak zrozumienie treÅ›ci caÅ‚ej publikacji wymaga umiejÄ™tnoÅ›ci technicznych. ZostaÅ‚a poÅ›wiÄ™cona ważnym koncepcjom C# i tajnikom tego jÄ™zyka, które rzadko kiedy sÄ… opisywane w literaturze. DokÅ‚adnie omówiono tu typy ogólne, LINQ oraz techniki programowania asynchronicznego. Przedstawiono najnowsze możliwoÅ›ci platformy .NET Core i jÄ™zyka C# 8.0, takie jak strumienie asynchroniczne, referencje akceptujÄ…ce wartoÅ›ci puste, dopasowywanie wzorców, domyÅ›lne implementacje interfejsów, zakresy, a także nowÄ… skÅ‚adniÄ™ indeksowania oraz zmiany w narzÄ™dziach platformy .NET. Liczne rozbudowane przykÅ‚ady stanowiÄ… Å›wietne uzupeÅ‚nienie prezentowanych treÅ›ci.
W tej książce między innymi:
- możliwoÅ›ci jÄ™zyka C#: klasy, typy niestandardowe, kolekcje, obsÅ‚uga bÅ‚Ä™dów
- optymalizacja kodu pod kątem wykorzystania pamięci
- praca na strumieniach danych za pomocÄ… technologii LINQ
- platforma .NET i programowanie wielowÄ…tkowe
- programowanie asynchroniczne a skalowalność aplikacji
Dla profesjonalistów najlepszy jest C#!
Osoby które kupowały "C# 8.0. Programowanie. Tworzenie aplikacji Windows, internetowych oraz biurowych", wybierały także:
- Gray Hat C#. Język C# w kontroli i łamaniu zabezpieczeń 57,74 zł, (17,90 zł -69%)
- ASP.NET Core 6. Kurs video. Rozwijaj aplikacje webowe z Entity Framework Core 179,00 zł, (71,60 zł -60%)
- Testowanie automatyczne w .NET. Kurs video. Zastosowania frameworka nUnit 169,00 zł, (76,05 zł -55%)
- Programowanie asynchroniczne i równoległe w C#. Kurs video. Poziom podstawowy 69,00 zł, (31,05 zł -55%)
- Technologia LINQ. Kurs video. Warsztat pracy z danymi z różnych źródeł 59,00 zł, (26,55 zł -55%)
Spis treści
C# 8.0. Programowanie. Tworzenie aplikacji Windows, internetowych oraz biurowych -- spis treści
Wstęp 15
1. Prezentacja C# 19
- Dlaczego C#? 20
- Najważniejsze cechy C# 21
- Kod zarzÄ…dzany i CLR 22
- Ogólność jest preferowana wzglÄ™dem specjalizacji 24
- Standardy oraz implementacje języka C# 25
- Kilka .NET-ów (chwilowo) 26
- Użycie .NET Standard w celu tworzenia projektów dziaÅ‚ajÄ…cych w różnych wersjach .NET 28
- Visual Studio oraz Visual Studio Code 30
- Anatomia prostego programu 33
- Dodawanie projektu do istniejÄ…cego rozwiÄ…zania 36
- OdwoÅ‚ania do innych projektów 37
- Odwołania do bibliotek zewnętrznych 37
- Pisanie testu jednostkowego 40
- Przestrzenie nazw 43
- Klasy 47
- Punkt wejścia do programu 48
- Testy jednostkowe 49
- Podsumowanie 50
2. Podstawy stosowania języka C# 51
- Zmienne lokalne 52
- Zakres 57
- Instrukcje i wyrażenia 61
- Instrukcje 61
- Wyrażenia 63
- Komentarze i białe znaki 68
- Dyrektywy preprocesora 70
- Symbole kompilacji 70
- Dyrektywy #error oraz #warning 72
- Dyrektywa #line 72
- Dyrektywa #pragma 73
- Dyrektywa #nullable 74
- Dyrektywy #region i #endregion 74
- Podstawowe typy danych 75
- Typy liczbowe 75
- Wartości logiczne 86
- Znaki i Å‚aÅ„cuchy znaków 86
- Krotki 92
- Dynamic 95
- Object 96
- Operatory 96
- Sterowanie przepływem 102
- Decyzje logiczne przy użyciu instrukcji if 102
- Wielokrotny wybór przy użyciu instrukcji switch 104
- Pętle: while oraz do 106
- Pętle znane z języka C 107
- Przeglądanie kolekcji przy użyciu pętli foreach 109
- Wzorce 110
- Uzyskiwanie większej dokładności dzięki użyciu when 114
- Wzorce w wyrażeniach 115
- Podsumowanie 117
3. Typy 119
- Klasy 119
- Składowe statyczne 123
- Klasy statyczne 124
- Typy referencyjne 125
- Struktury 136
- Kiedy tworzyć typy wartościowe? 140
- Gwarantowanie niezmienności 145
- Składowe 147
- Pola 147
- Konstruktory 149
- Dekonstruktory 159
- Metody 160
- Właściwości 177
- Indeksatory 183
- SkÅ‚adnia inicjalizatorów 185
- Operatory 186
- Zdarzenia 189
- Typy zagnieżdżone 189
- Interfejsy 190
- Domyślne implementacje metod w interfejsach 192
- Typy wyliczeniowe 194
- Inne typy 197
- Typy anonimowe 198
- Typy i metody częściowe 200
- Podsumowanie 202
4. Typy ogólne 203
- Typy ogólne 204
- Ograniczenia 206
- Ograniczenia typu 207
- Ograniczenia typu referencyjnego 209
- Ograniczenia typu wartościowego 212
- Wszystkie typy w hierarchii wartościowe dzięki ograniczeniu unmanaged 212
- Ograniczenie notnull 213
- Inne specjalne ograniczenia typów 213
- Stosowanie wielu ograniczeń 213
- Wartości przypominające zero 214
- Metody ogólne 215
- Wnioskowanie typu 216
- Typy ogólne i krotki 217
- Tajniki typów ogólnych 218
- Podsumowanie 220
5. Kolekcje 221
- Tablice 221
- Inicjalizacja tablic 224
- Przeszukiwanie i sortowanie 226
- Tablice wielowymiarowe 233
- Kopiowanie i zmiana wielkości 236
- List
237 - Interfejsy list i sekwencji 240
- Implementacja list i sekwencji 246
- Implementacja IEnumerable przy użyciu iteratorów 246
- Klasa Collection
251 - Klasa ReadOnlyCollection
252
- OdwoÅ‚ania do elementów z użyciem indeksów i zakresów 253
- System.Index 253
- System.Range 256
- ObsÅ‚uga indeksów i zakresów we wÅ‚asnych typach danych 258
- SÅ‚owniki 260
- SÅ‚owniki posortowane 263
- Zbiory 265
- Kolejki i stosy 266
- Listy połączone 267
- Kolekcje wspóÅ‚bieżne 268
- Kolekcje niezmienne 269
- Klasa ImutableArray
271
- Klasa ImutableArray
- Podsumowanie 272
6. Dziedziczenie 273
- Dziedziczenie i konwersje 274
- Dziedziczenie interfejsów 278
- Typy ogólne 279
- Kowariancja i kontrawariancja 280
- System.Object 285
- Wszechobecne metody typu System.Object 285
- Dostępność i dziedziczenie 287
- Metody wirtualne 288
- Metody abstrakcyjne 290
- Dziedziczenie i wersje bibliotek 291
- Metody i klasy ostateczne 297
- Dostęp do składowych klas bazowych 299
- Dziedziczenie i tworzenie obiektów 299
- Specjalne typy bazowe 303
- Podsumowanie 305
7. Cykl życia obiektów 307
- Mechanizm odzyskiwania pamięci 308
- Określanie osiągalności danych 310
- Przypadkowe problemy mechanizmu odzyskiwania pamięci 312
- SÅ‚abe referencje 315
- Odzyskiwanie pamięci 318
- Tryby odzyskiwania pamięci 324
- Tymczasowe zawieszanie odzyskiwania pamięci 328
- Przypadkowe utrudnianie scalania 329
- Wymuszanie odzyskiwania pamięci 332
- Destruktory i finalizacja 333
- Interfejs IDisposable 337
- Zwalnianie opcjonalne 343
- Pakowanie 344
- Pakowanie danych typu Nullable
349
- Pakowanie danych typu Nullable
- Podsumowanie 350
8. WyjÄ…tki 351
- ŹródÅ‚a wyjÄ…tków 353
- Wyjątki zgłaszane przez API 354
- Błędy wykrywane przez środowisko uruchomieniowe 356
- ObsÅ‚uga wyjÄ…tków 357
- Obiekty wyjÄ…tków 358
- Wiele bloków catch 360
- Filtry wyjÄ…tków 361
- Zagnieżdżone bloki try 362
- Bloki finally 364
- ZgÅ‚aszanie wyjÄ…tków 365
- Powtórne zgÅ‚aszanie wyjÄ…tków 366
- Sposób na szybkie zakoÅ„czenie aplikacji 370
- Typy wyjÄ…tków 370
- WyjÄ…tki niestandardowe 373
- Wyjątki nieobsługiwane 375
- Podsumowanie 377
9. Delegaty, wyrażenia lambda i zdarzenia 379
- Typy delegatów 380
- Tworzenie delegatów 381
- MulticastDelegate - delegaty zbiorowe 384
- WywoÅ‚ywanie delegatów 386
- Popularne typy delegatów 388
- Zgodność typów 390
- Więcej niż składnia 393
- Funkcje anonimowe 395
- Przechwytywane zmienne 398
- Wyrażenia lambda oraz drzewa wyrażeń 405
- Zdarzenia 407
- Standardowy wzorzec delegatów zdarzeÅ„ 409
- Niestandardowe metody dodajÄ…ce i usuwajÄ…ce zdarzenia 410
- Zdarzenia i mechanizm odzyskiwania pamięci 413
- Zdarzenia a delegaty 415
- Delegaty a interfejsy 416
- Podsumowanie 416
10. LINQ 419
- Wyrażenia zapytań 420
- Jak są rozwijane wyrażenia zapytań 423
- Obsługa wyrażeń zapytań 425
- Przetwarzanie opóźnione 429
- LINQ, typy ogólne oraz interfejs IQueryable
432 - Standardowe operatory LINQ 434
- Filtrowanie 436
- Selekcja 438
- Operator SelectMany 441
- Określanie porządku 444
- Testy zawierania 446
- Konkretne elementy i podzakresy 448
- Agregacja 452
- Operacje na zbiorach 457
- Operatory działające na całych sekwencjach z zachowaniem kolejności 458
- Grupowanie 459
- ZÅ‚Ä…czenia 464
- Konwersje 467
- Generowanie sekwencji 471
- Inne implementacje LINQ 472
- Entity Framework 472
- Parallel LINQ (PLINQ) 473
- LINQ to XML 473
- Reactive Extensions 473
- Tx (LINQ to Logs and Traces) 473
- Podsumowanie 474
11. Reactive Extensions 475
- Podstawowe interfejsy 477
- Interfejs IObserver
478 - Interfejs IObservable
479
- Interfejs IObserver
- Publikowanie i subskrypcja z wykorzystaniem delegatów 486
- Tworzenie źródÅ‚a przy wykorzystaniu delegatów 486
- Subskrybowanie obserwowalnych źródeÅ‚ przy użyciu delegatów 489
- Generator sekwencji 491
- Empty 491
- Never 491
- Return 492
- Throw 492
- Range 492
- Repeat 492
- Generate 492
- Zapytania LINQ 493
- Operatory grupowania 496
- Operatory Join 497
- Operator SelectMany 503
- Agregacja oraz inne operatory zwracające jedną wartość 503
- Operator Concat 504
- Operatory biblioteki Rx 505
- Merge 505
- Operatory Buffer i Window 507
- Operator Scan 514
- Operator Amb 515
- DistinctUntilChanged 516
- Mechanizmy szeregujÄ…ce 516
- OkreÅ›lanie mechanizmów szeregujÄ…cych 517
- Wbudowane mechanizmy szeregujÄ…ce 519
- Tematy 520
- Subject
521 - BehaviorSubject
522 - ReplaySubject
523 - AsyncSubject
523
- Subject
- Dostosowanie 524
- IEnumerable
oraz IAsyncEnumerable 524 - Zdarzenia .NET 526
- API asynchroniczne 528
- IEnumerable
- Operacje z uzależnieniami czasowymi 530
- Interval 530
- Timer 531
- Timestamp 532
- TimeInterval 533
- Throttle 533
- Sample 534
- Timeout 534
- Operatory okien czasowych 534
- Delay 535
- DelaySubscription 536
- Podsumowanie 536
12. Podzespoły 537
- Anatomia podzespołu 538
- Metadane .NET 539
- Zasoby 539
- PodzespoÅ‚y skÅ‚adajÄ…ce siÄ™ z wielu plików 539
- Inne możliwości formatu PE 540
- Tożsamość typu 542
- Wczytywanie podzespoÅ‚ów 545
- OkreÅ›lanie podzespoÅ‚ów 546
- Jawne wczytywanie podzespoÅ‚ów 550
- Izolacja i obsługa wtyczek z użyciem typu AssemblyLoadContext 551
- Nazwy podzespoÅ‚ów 553
- Silne nazwy 553
- Numer wersji 556
- Identyfikator kulturowy 559
- Zabezpieczenia 563
- Podsumowanie 563
13. Odzwierciedlanie 565
- Typy odzwierciedlania 566
- Assembly 567
- Module 570
- MemberInfo 572
- Type oraz TypeInfo 574
- MethodBase, ConstructorInfo oraz MethodInfo 580
- ParameterInfo 581
- FieldInfo 581
- PropertyInfo 582
- EventInfo 582
- Konteksty odzwierciedlania 583
- Podsumowanie 585
14. Atrybuty 587
- Stosowanie atrybutów 587
- Cele atrybutów 589
- Atrybuty obsługiwane przez kompilator 591
- Atrybuty obsługiwane przez CLR 596
- Definiowanie i stosowanie atrybutów niestandardowych 603
- Typ atrybutu 604
- Pobieranie atrybutów 606
- Podsumowanie 609
15. Pliki i strumienie 611
- Klasa Stream 612
- Położenie i poruszanie się w strumieniu 614
- Opróżnianie strumienia 615
- Kopiowanie 616
- Length 616
- Zwalnianie strumieni 617
- Operacje asynchroniczne 618
- Konkretne typy strumieni 619
- Jeden typ, wiele zachowań 620
- Typy operujÄ…ce na tekstach 622
- TextReader oraz TextWriter 622
- Konkretne typy do odczytu i zapisu Å‚aÅ„cuchów znaków 624
- Kodowanie 627
- Pliki i katalogi 631
- Klasa FileStream 631
- Klasa File 634
- Klasa Directory 638
- Klasa Path 639
- Klasy FileInfo, DirectoryInfo oraz FileSystemInfo 641
- Znane katalogi 642
- Serializacja 643
- Klasy BinaryReader oraz BinaryWriter 644
- Serializacja CLR 645
- JSON.NET 647
- Podsumowanie 652
16. Wielowątkowość 653
- WÄ…tki 653
- WÄ…tki, zmienne i wspólny stan 655
- Klasa Thread 661
- Pula wÄ…tków 663
- Powinowactwo do wÄ…tku oraz klasa SynchronizationContext 666
- Synchronizacja 670
- Monitory oraz słowo kluczowe lock 671
- Klasa SpinLock 677
- Blokady odczytu i zapisu 680
- Obiekty zdarzeń 681
- Klasa Barrier 684
- Klasa CountdownEvent 685
- Semafory 685
- Muteksy 686
- Klasa Interlocked 686
- Leniwa inicjalizacja 689
- PozostaÅ‚e klasy obsÅ‚ugujÄ…ce dziaÅ‚ania wspóÅ‚bieżne 691
- Zadania 693
- Klasy Task oraz Task
693 - Kontynuacje 699
- Mechanizmy szeregujÄ…ce 701
- ObsÅ‚uga bÅ‚Ä™dów 703
- Niestandardowe zadania bezwÄ…tkowe 703
- Związki zadanie nadrzędne - zadanie podrzędne 705
- Zadania złożone 705
- Klasy Task oraz Task
- Inne wzorce asynchroniczne 706
- Anulowanie 707
- RównolegÅ‚ość 708
- Klasa Parallel 708
- Parallel LINQ 709
- TPL Dataflow 710
- Podsumowanie 710
17. Asynchroniczne cechy języka 711
- Nowe słowa kluczowe: async oraz await 712
- Konteksty wykonania i synchronizacji 716
- Wykonywanie wielu operacji i pętli 718
- Zwracanie obiektu Task 724
- Stosowanie async w metodach zagnieżdżonych 726
- Wzorzec słowa kluczowego await 726
- ObsÅ‚uga bÅ‚Ä™dów 731
- Weryfikacja poprawnoÅ›ci argumentów 733
- WyjÄ…tki pojedyncze oraz grupy wyjÄ…tków 735
- Operacje równolegÅ‚e i nieobsÅ‚użone wyjÄ…tki 736
- Podsumowanie 738
18. Wydajne użytkowanie pamięci 739
- (Nie) kopiować! 740
- Reprezentacja elementów sekwencyjnych przy użyciu Span
744 - Metody pomocnicze 747
- Tylko na stosie 747
- Reprezentacja elementów sekwencyjnych przy użyciu Memory
748 - ReadOnlySequence
748 - Przetwarzanie strumieni danych przy użyciu potoków 749
- Przetwarzanie danych JSON w ASP.NET Core 751
- Podsumowanie 757