C# 10. Programowanie. Tworzenie aplikacji Windows, internetowych i biurowych - ebook
C# 10. Programowanie. Tworzenie aplikacji Windows, internetowych i biurowych - ebook
Język C#, sztandarowe dzieło Microsoftu, jest rozwijany stopniowo i ze starannością. Wciąż cechuje go prostota, a jego możliwości konsekwentnie rosną. Każda nowa funkcjonalność idealnie integruje się z resztą języka. W efekcie C# jest dojrzały, nowoczesny, wszechstronny i bezpieczny. Jego kolejne wydanie, oznaczone numerem 10.0, różni się od poprzednich, więc aby programowanie w C# pozostało efektywne i satysfakcjonujące, trzeba opanować niuanse nowej wersji języka i narzędzi z nim związanych.
Ta książka jest uaktualnionym wydaniem wyczerpującego przewodnika dla doświadczonych programistów. Omawia ważne koncepcje języka C# i te jego tajniki, które rzadko kiedy są opisywane w poświęconych mu publikacjach. Uwzględnia najnowsze możliwości .NET 6 i C# w wersjach 9.0 i 10.0, z czego warto wymienić: rekordy, rozszerzone możliwości dopasowywania wzorców, a także nowe techniki upraszczania kodu w celu poprawy jego efektywności. Dokładnie opisano tu typy ogólne, LINQ i techniki programowania asynchronicznego. Wyjaśniono, jak w praktyce skorzystać z tych możliwości podczas tworzenia różnego rodzaju aplikacji: chmurowych, internetowych i klasycznych dla komputerów biurkowych.
W książce między innymi:
- zmiany wprowadzone w ostatnich wersjach języka C#
- zasady korzystania z nowych możliwości języka
- zastosowanie nowych funkcjonalności C# w tworzeniu aplikacji
- nowe możliwości bibliotek klas .NET
- zastosowanie bibliotek klas .NET do praktycznych zadań programistycznych
- zwiększanie siły ekspresji kodu w C#
Poznaj sekretne tajniki C# i zostań mistrzem dobrego kodu!
Spis treści
Wstęp
1. Prezentacja C#
- Dlaczego C#?
- Kod zarządzany i CLR
- Ogólność jest preferowana względem specjalizacji
- Standardy oraz implementacje języka C#
- Wiele .NET-ów
- Cykle wydawnicze i wsparcie długoterminowe
- Użycie .NET Standard w celu tworzenia projektów działających
- Visual Studio, Visual Studio Code oraz JetBrains Rider
- Anatomia prostego programu
- Pisanie testu jednostkowego
- Przestrzenie nazw
- Klasy
- Testy jednostkowe
- Podsumowanie
2. Podstawy stosowania języka C#
- Zmienne lokalne
- Zakres
- Niejednoznaczności nazw zmiennych
- Instancje zmiennych lokalnych
- Instrukcje i wyrażenia
- Instrukcje
- Wyrażenia
- Komentarze i białe znaki
- Dyrektywy preprocesora
- Symbole kompilacji
- Dyrektywy #error oraz #warning
- Dyrektywa #line
- Dyrektywa #pragma
- Dyrektywa #nullable
- Dyrektywy #region i #endregion
- Podstawowe typy danych
- Typy liczbowe
- Wartości logiczne
- Znaki i łańcuchy znaków
- Krotki
- Dynamic
- Object
- Operatory
- Sterowanie przepływem
- Decyzje logiczne przy użyciu instrukcji if
- Wielokrotny wybór przy użyciu instrukcji switch
- Pętle: while i do
- Pętle znane z języka C
- Przeglądanie kolekcji przy użyciu pętli foreach
- Wzorce
- Łączenie i negacja wzorców
- Wzorce relacyjne
- Uzyskiwanie większej dokładności dzięki użyciu when
- Wzorce w wyrażeniach
- Podsumowanie
3. Typy
- Klasy
- Składowe statyczne
- Klasy statyczne
- Rekordy
- Typy referencyjne i wartość null
- Eliminacja wartości pustych przy użyciu referencji, które ich nie akceptują
- Struktury
- Kiedy tworzyć typy wartościowe?
- Gwarantowanie niezmienności
- Typy record struct
- Klasy, struktury, rekordy czy krotki?
- Składowe
- Dostępność
- Pola
- Konstruktory
- Dekonstruktory
- Metody
- Właściwości
- Operatory
- Zdarzenia
- Typy zagnieżdżone
- Interfejsy
- Domyślne implementacje metod w interfejsach
- Typy wyliczeniowe
- Inne typy
- Typy anonimowe
- Typy i metody częściowe
- Podsumowanie
4. Typy ogólne
- Typy ogólne
- Ograniczenia
- Ograniczenia typu
- Ograniczenia typu referencyjnego
- Ograniczenia typu wartościowego
- Wszystkie typy w hierarchii wartościowe dzięki ograniczeniu unmanaged
- Ograniczenie notnull
- Inne specjalne ograniczenia typów
- Stosowanie wielu ograniczeń
- Wartości przypominające zero
- Metody ogólne
- Wnioskowanie typu
- Typy ogólne i krotki
- Tajniki typów ogólnych
- Podsumowanie
5. Kolekcje
- Tablice
- Inicjalizacja tablic
- Przeszukiwanie i sortowanie
- Tablice wielowymiarowe
- Kopiowanie i zmiana wielkości
- List
- Interfejsy list i sekwencji
- Implementacja list i sekwencji
- Implementacja IEnumerable przy użyciu iteratorów
- Klasa Collection
- Klasa ReadOnlyCollection
- Odwołania do elementów z użyciem indeksów i zakresów
- System.Index
- System.Range
- Obsługa indeksów i zakresów we własnych typach danych
- Słowniki
- Słowniki posortowane
- Zbiory
- Kolejki i stosy
- Listy połączone
- Kolekcje współbieżne
- Kolekcje niezmienne
- Podsumowanie
6. Dziedziczenie
- Dziedziczenie i konwersje
- Dziedziczenie interfejsów
- Typy ogólne
- Kowariancja i kontrawariancja
- System.Object
- Wszechobecne metody typu System.Object
- Dostępność i dziedziczenie
- Metody wirtualne
- Metody abstrakcyjne
- Dziedziczenie i wersje bibliotek
- Metody i klasy ostateczne
- Dostęp do składowych klas bazowych
- Dziedziczenie i tworzenie obiektów
- Rekordy
- Rekordy, dziedziczenie i słowo kluczowe with
- Specjalne typy bazowe
- Podsumowanie
7. Cykl życia obiektów
- Mechanizm odzyskiwania pamięci
- Określanie osiągalności danych
- Przypadkowe problemy mechanizmu odzyskiwania pamięci
- Słabe referencje
- Odzyskiwanie pamięci
- Tryby odzyskiwania pamięci
- Tymczasowe zawieszanie odzyskiwania pamięci
- Przypadkowe utrudnianie scalania
- Wymuszanie odzyskiwania pamięci
- Destruktory i finalizacja
- Interfejs IDisposable
- Zwalnianie opcjonalne
- Pakowanie
- Pakowanie danych typu Nullable
- Podsumowanie
8. Wyjątki
- Źródła wyjątków
- Wyjątki zgłaszane przez API
- Błędy wykrywane przez środowisko uruchomieniowe
- Obsługa wyjątków
- Obiekty wyjątków
- Wiele bloków catch
- Filtry wyjątków
- Zagnieżdżone bloki try
- Bloki finally
- Zgłaszanie wyjątków
- Powtórne zgłaszanie wyjątków
- Sposób na szybkie zakończenie aplikacji
- Typy wyjątków
- Wyjątki niestandardowe
- Wyjątki nieobsługiwane
- Podsumowanie
9. Delegaty, wyrażenia lambda i zdarzenia
- Typy delegatów
- Tworzenie delegatów
- MulticastDelegate - delegaty zbiorowe
- Wywoływanie delegatów
- Popularne typy delegatów
- Zgodność typów
- Więcej niż składnia
- Funkcje anonimowe
- Przechwytywane zmienne
- Wyrażenia lambda oraz drzewa wyrażeń
- Zdarzenia
- Standardowy wzorzec delegatów zdarzeń
- Niestandardowe metody dodające i usuwające zdarzenia
- Zdarzenia i mechanizm odzyskiwania pamięci
- Zdarzenia a delegaty
- Delegaty a interfejsy
- Podsumowanie
10. LINQ
- Wyrażenia zapytań
- Jak są rozwijane wyrażenia zapytań
- Obsługa wyrażeń zapytań
- Przetwarzanie opóźnione
- LINQ, typy ogólne oraz interfejs IQueryable
- Standardowe operatory LINQ
- Filtrowanie
- Selekcja
- Operator SelectMany
- Podział na części
- Określanie porządku
- Testy zawierania
- Asynchroniczne przetwarzanie natychmiastowe
- Agregacja
- Operacje na zbiorach
- Operatory działające na całych sekwencjach z zachowaniem kolejności
- Grupowanie
- Złączenia
- Konwersje
- Generowanie sekwencji
- Inne implementacje LINQ
- Entity Framework Core
- Parallel LINQ (PLINQ)
- LINQ to XML
- IAsyncEnumerable
- Reactive Extensions
- Podsumowanie
11. Reactive Extensions
- Podstawowe interfejsy
- Interfejs IObserver
- Interfejs IObservable
- Publikowanie i subskrypcja z wykorzystaniem delegatów
- Tworzenie źródła przy wykorzystaniu delegatów
- Subskrybowanie obserwowalnych źródeł przy użyciu delegatów
- Generator sekwencji
- Empty
- Never
- Return
- Throw
- Range
- Repeat
- Generate
- Zapytania LINQ
- Operatory grupowania
- Operatory Join
- Operator SelectMany
- Agregacja oraz inne operatory zwracające jedną wartość
- Operator Concat
- Operatory biblioteki Rx
- Merge
- Operatory Buffer i Window
- Operator Scan
- Operator Amb
- DistinctUntilChanged
- Mechanizmy szeregujące
- Określanie mechanizmów szeregujących
- Wbudowane mechanizmy szeregujące
- Tematy
- Subject
- BehaviorSubject
- ReplaySubject
- AsyncSubject
- Dostosowanie
- IEnumerable i IAsyncEnumerable
- Zdarzenia .NET
- API asynchroniczne
- Operacje z uzależnieniami czasowymi
- Interval
- Timer
- Timestamp
- TimeInterval
- Throttle
- Sample
- Timeout
- Operatory okien czasowych
- Delay
- DelaySubscription
- Reaqtor - Rx jako usługa
- Podsumowanie
12. Podzespoły
- Anatomia podzespołu
- Metadane .NET
- Zasoby
- Podzespoły składające się z wielu plików
- Inne możliwości formatu PE
- Tożsamość typu
- Wczytywanie podzespołów
- Określanie podzespołów
- Jawne wczytywanie podzespołów
- Izolacja i obsługa wtyczek z użyciem typu AssemblyLoadContext
- Nazwy podzespołów
- Silne nazwy
- Numer wersji
- Numery wersji a wczytywanie podzespołów
- Identyfikator kulturowy
- Zabezpieczenia
- Platformy docelowe i .NET Standard
- Podsumowanie
13. Odzwierciedlanie
- Typy odzwierciedlania
- Assembly
- Module
- MemberInfo
- Type i TypeInfo
- MethodBase, ConstructorInfo oraz MethodInfo
- ParameterInfo
- FieldInfo
- PropertyInfo
- EventInfo
- Konteksty odzwierciedlania
- Podsumowanie
14. Atrybuty
- Stosowanie atrybutów
- Cele atrybutów
- Atrybuty obsługiwane przez kompilator
- Atrybuty obsługiwane przez CLR
- Definiowanie i stosowanie atrybutów niestandardowych
- Typy atrybutów
- Pobieranie atrybutów
- Wczytywanie jedynie metadanych
- Podsumowanie
15. Pliki i strumienie
- Klasa Stream
- Położenie i poruszanie się w strumieniu
- Opróżnianie strumienia
- Kopiowanie
- Length
- Zwalnianie strumieni
- Operacje asynchroniczne
- Konkretne typy strumieni
- Jeden typ, wiele zachowań
- Dostęp swobodny i rozproszone/zebrane operacje wejścia-wyjścia bez klasy Stream
- Typy operujące na tekstach
- TextReader oraz TextWriter
- Konkretne typy do odczytu i zapisu łańcuchów znaków
- Kodowanie
- Pliki i katalogi
- Klasa FileStream
- Klasa File
- Klasa Directory
- Klasa Path
- Klasy FileInfo, DirectoryInfo oraz FileSystemInfo
- Znane katalogi
- Serializacja
- Klasy BinaryReader i BinaryWriter
- Serializacja CLR
- JSON
- Podsumowanie
16. Wielowątkowość
- Wątki
- Wątki, zmienne i wspólny stan
- Pamięć lokalna wątku
- Klasa Thread
- Pula wątków
- Powinowactwo do wątku oraz klasa SynchronizationContext
- Klasa ExecutionContext
- Synchronizacja
- Monitory oraz słowo kluczowe lock
- Klasa SpinLock
- Blokady odczytu i zapisu
- Obiekty zdarzeń
- Klasa Barrier
- Klasa CountdownEvent
- Semafory
- Muteksy
- Klasa Interlocked
- Leniwa inicjalizacja
- Pozostałe klasy obsługujące działania współbieżne
- Zadania
- Klasy Task i Task
- Kontynuacje
- Mechanizmy szeregujące
- Obsługa błędów
- Niestandardowe zadania bezwątkowe
- Związki zadanie nadrzędne - zadanie podrzędne
- Zadania złożone
- Inne wzorce asynchroniczne
- Anulowanie
- Równoległość
- Klasa Parallel
- Parallel LINQ
- TPL Dataflow
- Podsumowanie
17. Asynchroniczne cechy języka
- Nowe słowa kluczowe: async i await
- Konteksty wykonania i synchronizacji
- Wykonywanie wielu operacji i pętli
- Zwracanie obiektu Task
- Stosowanie async w metodach zagnieżdżonych
- Wzorzec słowa kluczowego await
- Obsługa błędów
- Weryfikacja poprawności argumentów
- Wyjątki pojedyncze oraz grupy wyjątków
- Operacje równoległe i nieobsłużone wyjątki
- Podsumowanie
18. Wydajne użytkowanie pamięci
- (Nie) kopiować!
- Reprezentacja elementów sekwencyjnych przy użyciu Span
- Metody pomocnicze
- Tylko na stosie
- Reprezentacja elementów sekwencyjnych przy użyciu Memory
- ReadOnlySequence
- Przetwarzanie strumieni danych przy użyciu potoków
- Przetwarzanie danych JSON w ASP.NET Core
- Podsumowanie
Skorowidz
Kategoria: | Programowanie |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-8322-207-3 |
Rozmiar pliku: | 6,3 MB |