C# 10

Book description

C# jest obiektowym językiem programowania ogólnego przeznaczenia z kontrolą typów - dojrzałym i wyjątkowo wszechstronnym. Jego twórcy chcieli przede wszystkim zapewnić programistom jak największą efektywność, co znalazło odzwierciedlenie w prostocie języka, ekspresywności kodu i wydajności działania. Wersja C# 10 została dostosowana do współpracy ze środowiskiem uruchomieniowym Microsoft .NET 6.

Ta książka ma pełnić funkcję użytecznej ściągawki zawierającej wszystko, co potrzebne do pracy z C#. Została pomyślana tak, aby maksymalnie ułatwić przeglądanie i odnajdywanie potrzebnych treści - i tym samym wesprzeć pracę każdego, komu zależy na sprawnym pisaniu kodu w języku C#. Jest też nieocenioną pomocą dla osób, które znają już inne języki programowania, takie jak C++ czy Java, i chcą nabrać wprawy w pracy z C#. Poszczególne zagadnienia przedstawiono w przejrzysty, treściwy i esencjonalny sposób, tak by skoncentrować się na najważniejszych sprawach. To książka, która powinna się znajdować w zasięgu ręki każdego programisty C#!

Najważniejsze zagadnienia:

podstawy języka z uwzględnieniem nowych cech C# w wersji 10
zaawansowane zagadnienia, w tym przeciążanie operatorów, ograniczenia typów, typy z wartością pustą i wzorce dopasowania typów
wyrażenia lambda, domknięcia i funkcje asynchroniczne
LINQ: sekwencje, leniwe wykonanie, standardowe operatory zapytań
kod nienadzorowany i wskaźniki
atrybuty, dyrektywy preprocesora i generowanie dokumentacji XML

Kodujesz w C#? Miej pod ręką wszystko, co potrzebne!

Table of contents

  1. C# 10 Leksykon kieszonkowy
    1. Pierwszy program w C#
      1. Kompilacja
    2. Składnia
      1. Identyfikatory i słowa kluczowe
        1. Unikanie kolizji nazw
        2. Kontekstowe słowa kluczowe
      2. Literały, znaki interpunkcyjne i operatory
      3. Komentarze do kodu
    3. System typów
      1. Przykłady typów predefiniowanych
      2. Przykłady typów własnych
        1. Składowe typu
        2. Symetria typów wbudowanych i typów własnych
        3. Konstruktory a konkretyzacja typu
        4. Składowe statyczne a składowe instancji
        5. Słowo kluczowe public
        6. Tworzenie przestrzeni nazw
        7. Metoda Main
        8. Instrukcje w bloku głównym programu
      3. Typy i konwersje
      4. Typy wartościowe a typy referencyjne
        1. Typy wartościowe
        2. Typy referencyjne
        3. Wartość pusta
      5. Taksonomia typów predefiniowanych
    4. Typy liczbowe
      1. Literały liczbowe
        1. Wnioskowanie o typie literału liczbowego
        2. Przyrostki literałów liczbowych
      2. Konwersje liczbowe
        1. Konwersja liczby całkowitej na liczbę całkowitą
        2. Konwersja liczby zmiennoprzecinkowej na liczbę zmiennoprzecinkową
        3. Konwersja liczby zmiennoprzecinkowej na całkowitą
      3. Operatory arytmetyczne
      4. Operatory inkrementacji i dekrementacji
      5. Specjalizowane operacje na liczbach całkowitych
        1. Dzielenie całkowite
        2. Przepełnienie zakresu liczby całkowitej
        3. Obliczenia nadzorowane i nienadzorowane
        4. Operatory bitowe
      6. Liczby całkowite 8- i 16-bitowe
      7. Wyróżnione wartości zmiennoprzecinkowe
      8. double kontra decimal
      9. Błędy zaokrąglania liczb rzeczywistych
    5. Typ wartości logicznych i operatory logiczne
      1. Operatory porównania i relacji
      2. Operatory logiczne
    6. Znaki i ciągi znaków
      1. Typ string
        1. Łączenie ciągów
        2. Ciągi interpolowane
        3. Porównywanie ciągów
        4. Ciągi interpolowane stałymi (C# 10)
        5. Wyszukiwanie w ciągach
        6. Manipulowanie ciągami
    7. Tablice
      1. Domyślna inicjalizacja elementów tablic
      2. Indeksy i zakresy
        1. Indeksy
        2. Zakresy
      3. Tablice wielowymiarowe
        1. Tablice regularne
        2. Tablice wyszczerbione
      4. Wyrażenia uproszczonej inicjalizacji tablic
    8. Zmienne i parametry
      1. Stos i sterta
        1. Stos
        2. Sterta
      2. Przypisania oznaczone
      3. Wartości domyślne
      4. Parametry
        1. Przekazywanie argumentów przez wartość
        2. Modyfikator ref
        3. Modyfikator out
        4. Deklarowanie i pomijanie argumentów wyjściowych
        5. Modyfikator in
        6. Modyfikator params
        7. Parametry opcjonalne
        8. Argumenty nazwane
      5. Niejawne typowanie zmiennych lokalnych (var)
      6. Wyrażenia new z automatycznym typem docelowym
    9. Operatory i wyrażenia
      1. Wyrażenia przypisania
      2. Priorytety i łączność operatorów
        1. Priorytet
        2. Operatory z łącznością lewostronną
        3. Operatory z łącznością prawostronną
      3. Tabela operatorów
    10. Operatory na typach z dopuszczalną wartością pustą
      1. Operator ??
      2. Operator ??=
      3. Operator ?.
    11. Instrukcje
      1. Instrukcje deklaracji
        1. Zmienne lokalne
      2. Instrukcje wyrażeniowe
      3. Instrukcje warunkowe
        1. Instrukcja if
        2. Klauzula else
        3. Zmiana przepływu sterowania za pomocą nawiasów klamrowych
        4. Instrukcja switch
        5. Instrukcja switch z typami
        6. Wyrażenia switch
      4. Instrukcje iteracyjne
        1. Pętle while i do-while
        2. Pętle for
        3. Pętle foreach
      5. Instrukcje skoku
        1. Instrukcja break
        2. Instrukcja continue
        3. Instrukcja goto
        4. Instrukcja return
    12. Przestrzenie nazw
      1. Przestrzeń nazw w pliku (C# 10)
      2. Dyrektywa using
      3. Globalna dyrektywa using (C# 10)
      4. Dyrektywa using static
      5. Reguły obowiązujące w przestrzeniach nazw
        1. Zasięg nazw
        2. Przesłanianie nazw
        3. Niezależne deklaracje przestrzeni nazw
        4. Kwalifikator global::
      6. Synonimy typów i przestrzeni nazw
    13. Klasy
      1. Pola
      2. Stałe
      3. Metody
        1. Metody skrócone do wyrażeń
        2. Metody lokalne
        3. Statyczne metody lokalne
        4. Przeciążanie metod
      4. Konstruktory instancji
        1. Niejawne konstruktory bezparametrowe
        2. Konstruktory niepubliczne
      5. Dekonstruktory
      6. Inicjalizatory obiektów
      7. Referencja this
      8. Właściwości
        1. Właściwości skrócone do wyrażeń
        2. Właściwości automatyczne
        3. Inicjalizacja właściwości
        4. Dostępność akcesorów
        5. Akcesory inicjalizacji
      9. Indeksery
        1. Implementowanie indeksera
        2. Stosowanie indeksów i zakresów z indeksatorami
      10. Konstruktory statyczne
      11. Klasy statyczne
      12. Finalizatory
      13. Typy i metody częściowe
        1. Metody częściowe
        2. Rozszerzone metody częściowe
      14. Operator nameof
    14. Dziedziczenie
      1. Polimorfizm
      2. Rzutowanie i konwersja referencji
        1. Rzutowanie w górę
        2. Rzutowanie w dół
        3. Operator as
        4. Operator is
      3. Wirtualne funkcje składowe
        1. Kowariancja typów wartości zwracanych
      4. Klasy i składowe abstrakcyjne
      5. Widoczność składowych dziedziczonych
      6. Pieczętowanie funkcji i klas
      7. Słowo kluczowe base
      8. Konstruktory a dziedziczenie
        1. Kolejność inicjalizacji pól i wywoływania konstruktorów
      9. Przeciążanie a rozstrzyganie wywołań
    15. Typ object
      1. Pakowanie i odpakowywanie
      2. Statyczna i dynamiczna kontrola typów
      3. Metoda GetType() i operator typeof
      4. Wykaz składowych klasy object
      5. Equals, ReferenceEquals i GetHashCode
      6. Metoda ToString
    16. Struktury
      1. Semantyka konstrukcji struktury
      2. Struktury i funkcje readonly
    17. Modyfikatory dostępu
      1. Zaprzyjaźnianie zestawów
      2. Ograniczanie dostępności
    18. Interfejsy
      1. Rozszerzanie interfejsu
      2. Jawna implementacja interfejsu
      3. Wirtualne implementowanie składowych interfejsów
      4. Ponowna implementacja interfejsu w klasie pochodnej
      5. Domyślne składowe interfejsów
    19. Typy wyliczeniowe
      1. Konwersje typów wyliczeniowych
      2. Flagi
      3. Operatory typów wyliczeniowych
    20. Typy zagnieżdżone
    21. Uogólnienia
      1. Typy uogólnione
      2. Metody uogólnione
      3. Deklarowanie parametrów typowych
      4. typeof i niezwiązane typy uogólnione
      5. Domyślne argumenty typowe
      6. Ograniczenia uogólnień
      7. Pochodne typów uogólnionych
      8. Deklaracje uogólnień z odwołaniami do samych siebie
      9. Dane statyczne
      10. Kowariancja
      11. Kontrawariancja
    22. Delegaty
      1. Pisanie metod-wtyczek dla delegatów
      2. Delegaty do metod instancji i metod statycznych
      3. Delegaty wielokrotne
      4. Uogólnione typy delegatów
      5. Delegaty Func i Action
      6. Zgodność delegatów
        1. Wariancja typu wartości zwracanej
        2. Wariancja typów parametrów
        3. Wariancja typów parametrów w delegatach uogólnionych
    23. Zdarzenia
      1. Standardowy schemat zdarzenia
      2. Akcesory zdarzenia
    24. Wyrażenia lambda
      1. Zmienne zewnętrzne w wyrażeniach lambda
        1. Statyczne wyrażenia lambda
        2. Wciąganie zmiennych iteracyjnych
      2. Wyrażenia lambda a metody lokalne
    25. Metody anonimowe
    26. Wyjątki i instrukcja try
      1. Klauzula catch
        1. Filtrowanie wyjątków
      2. Blok finally
        1. Instrukcja using
        2. Deklaracje using
      3. Zgłaszanie wyjątków
        1. Wyrażenia zgłaszania wyjątków
        2. Ponowne zgłaszanie wyjątku
      4. Najważniejsze właściwości klasy System.Exception
    27. Enumeratory i iteratory
      1. Enumeracja
      2. Inicjalizatory kolekcji
      3. Iteratory
      4. Semantyka iteratora
        1. Wielokrotna instrukcja yield
        2. Instrukcja yield break
      5. Składanie sekwencji
    28. Typy z dopuszczalną wartością pustą
      1. Struktura Nullable<T>
      2. Konwersje dla typów dopuszczających wartości puste
      3. Pakowanie i odpakowywanie wartości typów dopuszczających null
      4. Pożyczanie operatorów
        1. Operatory porównania (== i !=)
        2. Operatory relacji (<, <=, >=, >)
        3. Wszystkie pozostałe operatory (+, -, *, /, %, &, |, ^, <<, >>, +, ++, -, --, !, ~)
        4. Mieszanie typów dopuszczających i niedopuszczających wartości null
      5. Typ bool? z operatorami & i |
      6. Typy z dopuszczalną wartością pustą i operatory na tych typach
    29. Zabezpieczanie pustych referencji
    30. Metody rozszerzające
      1. Kaskadowe wywołania metod rozszerzających
      2. Niejednoznaczność i rozstrzyganie niejednoznaczności
    31. Typy anonimowe
    32. Krotki
      1. Nazwane elementy krotek
      2. Dekonstrukcja krotek
    33. Rekordy
      1. Definiowanie rekordów
        1. Listy parametrów
      2. Zmiany niedestrukcyjne
      3. Konstruktory główne
      4. Porównywanie wartości rekordów
    34. Wzorce
      1. Wzorzec var
      2. Wzorzec stałej
      3. Wzorce relacji
      4. Wzorce kombinowane
      5. Wzorce krotek i wzorce pozycyjne
      6. Wzorce właściwości
    35. LINQ
      1. Podstawy LINQ
        1. Proste zapytanie
        2. Projekcja
        3. Operatory Take i Skip
        4. Operatory zwracające pojedyncze elementy
        5. Operatory agregacji
        6. Kwantyfikatory
        7. Operatory zbiorów
      2. Opóźnione wykonanie
      3. Standardowe operatory zapytań
      4. Kaskadowe operatory zapytań
      5. Wyrażenia zapytaniowe
        1. Składnia wyrażeniowa a składnia kaskadowa
      6. Słowo kluczowe let
      7. Kontynuacje zapytań
      8. Zapytania z wieloma generatorami
      9. Złączenia
        1. GroupJoin
        2. Zip
      10. Porządkowanie
      11. Grupowanie
      12. Operatory OfType i Cast
    36. Wiązanie dynamiczne
      1. Wiązanie statyczne a wiązanie dynamiczne
      2. Wiązanie ze wskazania
      3. Wiązanie językowe
      4. Wyjątek RuntimeBinderException
      5. Reprezentacja typu dynamicznego
      6. Konwersje typów dynamicznych
      7. var a dynamic
      8. Wyrażenia dynamiczne
      9. Rozstrzyganie przeciążeń składowych dynamicznych
      10. Funkcje niedynamiczne
    37. Przeciążanie operatorów
      1. Funkcje operatorów
      2. Przeciążanie operatorów porównania i relacji
      3. Własne konwersje jawne i niejawne
    38. Atrybuty
      1. Klasy atrybutów
      2. Nazwane i pozycyjne parametry atrybutów
      3. Obiekt docelowy atrybutu
      4. Nadawanie wielu atrybutów
      5. Definiowanie własnych atrybutów
      6. Odwołania do atrybutów w czasie wykonania
    39. Atrybuty wywołania
      1. Atrybut CallerArgumentExpression (C# 10)
    40. Funkcje asynchroniczne
      1. Słowa kluczowe await i async
      2. Zachowanie lokalnego kontekstu
      3. Pisanie funkcji asynchronicznych
        1. Zwracanie Task<TResult>
      4. Współbieżność
      5. Asynchroniczne wyrażenia lambda
      6. Strumienie asynchroniczne
    41. Wskaźniki i kod nienadzorowany
      1. Elementarz wskaźników
      2. Kod nienadzorowany
      3. Instrukcja fixed
      4. Operator dostępu do składowej przez wskaźnik
      5. Słowo kluczowe stackalloc
      6. Bufory umiejscowione w strukturach
      7. Typ void*
      8. Wskaźniki do funkcji
    42. Dyrektywy preprocesora
      1. Ostrzeżenia i pragma
    43. Dokumentacja XML
      1. Standardowe znaczniki dokumentacji XML
    44. O autorach
    45. Kolofon

Product information

  • Title: C# 10
  • Author(s): Joseph Albahari
  • Release date: September 2022
  • Publisher(s): Helion
  • ISBN: 9788328396159