- Obniżka
Opis produktu: C Sharp 10. Programowanie. Tworzenie aplikacji Windows, internetowych i biurowych - Ian Griffiths
Język C#, stworzony przez Microsoft ciągle rozwija się poprzez dodawanie nowych funkcjonalności i unowocześnień. Wydanie o oznaczeniu 10.0 różni się nieco od poprzednich wersji, dlatego opanowanie zasad jego działania oraz wykorzystywanych narzędzi jest konieczne, aby programowanie w C# pozostało efektywne i satysfakcjonujące. Z pomocą przychodzi przewodnik Iana Griffithsa, który wyczerpująco opisuje wprowadzone zmiany, nowe funkcjonalności przydatne w tworzeniu aplikacji, a także nowe możliwości bibliotek klas .NET.
Informacje o książce
- Tytuł oryginalny: Programming C# 10: Build Cloud, Web, and Desktop Applications
- Autor: Ian Griffiths
- Tłumaczenie: Piotr Rajca
- ISBN: 978-83-832-2206-6
- Rok wydania: 2023
- Liczba stron: 800
- Oprawa: miękka
- Format: 165 x 235 mm
- Wydawnictwo: Helion S.A.
Spis treści
Wstęp
1. Prezentacja C#
-
- Dlaczego C#?
- Kod zarządzany i CLR
- Ogólność jest preferowana względem specjalizacji
- Dlaczego C#?
- 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
- Zmienne lokalne
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
- Klasy
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
- Tablice
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
- Pakowanie danych typu Nullable
- Podsumowanie
- Mechanizm odzyskiwania pamięci
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
- Źródła wyjątków
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
- Typy delegatów
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
- Wyrażenia zapytań
11. Reactive Extensions
-
- Podstawowe interfejsy
- Interfejs IObserver
- Interfejs IObservable
- Interfejs IObserver
- 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
- Subject
- Dostosowanie
- IEnumerable
i IAsyncEnumerable - Zdarzenia .NET
- API asynchroniczne
- IEnumerable
- Operacje z uzależnieniami czasowymi
- Interval
- Timer
- Timestamp
- TimeInterval
- Throttle
- Sample
- Timeout
- Operatory okien czasowych
- Delay
- DelaySubscription
- Reaqtor - Rx jako usługa
- Podsumowanie
- Podstawowe interfejsy
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
- Anatomia podzespołu
13. Odzwierciedlanie
-
- Typy odzwierciedlania
- Assembly
- Module
- MemberInfo
- Type i TypeInfo
- MethodBase, ConstructorInfo oraz MethodInfo
- ParameterInfo
- FieldInfo
- PropertyInfo
- EventInfo
- Konteksty odzwierciedlania
- Podsumowanie
- Typy odzwierciedlania
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
- Stosowanie atrybutów
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
- Klasa Stream
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
- Klasy Task i Task
- Inne wzorce asynchroniczne
- Anulowanie
- Równoległość
- Klasa Parallel
- Parallel LINQ
- TPL Dataflow
- Podsumowanie
- Wątki
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
- Nowe słowa kluczowe: async i await
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