C# 7.0

Book description

C# 7.0. Leksykon kieszonkowy
C# od dawna jest dojrzałym, uniwersalnym i efektywnym językiem programowania, dzięki któremu można sprawnie pisać kod bezpieczny, przejrzysty i wydajny. Założeniami, które przyświecały twórcom C#, jest obiektowość i kontrola typów, jednak przede wszystkim język ten ma być prosty w stosowaniu. Mimo to nawet tak świetne narzędzie, jak C# w wersji 7.0, jest jeszcze wygodniejsze w pracy, jeśli programista ma pod ręką coś, co wspomoże jego codzienną pracę i we właściwym miejscu podsunie potrzebną informację.

Niniejsza książka jest świetnym, zwięzłym i wyjątkowo praktycznym kompendium. Zawiera dokładnie to, co powinna — bez nudnawych wywodów i rozdmuchanych przykładów. Może posłużyć jako podręcznik do nauki C# lub jako bardzo poręczna ściągawka, pozwalająca na szybkie znalezienie odpowiedzi. Jeśli tylko masz podstawowe umiejętności programowania w Javie, C++ lub w poprzednich wersjach C# i chcesz bez większych problemów przystąpić do programowania w C# 7.0, to trzymasz w ręku właściwą książkę.

W tej książce:

podstawy języka C#,
nowości w C#: krotki, składnia dekonstrukcji krotek, dopasowywanie wzorców,
zagadnienia zaawansowane, w tym przeciążanie operatorów, typy uogólnione i ograniczenia, wyrażenia lambda, domknięcia i inne,
technologia LINQ: sekwencje, leniwe wykonanie, standardowe operatory zapytań,
wiązania dynamiczne i funkcje asynchroniczne,
wskaźniki, atrybuty, dyrektywy preprocesora i wiele innych zagadnień.
Zwięźle, prosto i w sam punkt: C#!

Table of contents

  1. Konwencje typograficzne
  2. Korzystanie z przykładowych programów
  3. Pierwszy program w C#
    1. Kompilacja
  4. 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
  5. 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
    3. Konwersje
    4. Typy wartościowe a typy referencyjne
      1. Typy wartościowe
      2. Typy referencyjne
      3. Wartość pusta
    5. Taksonomia typów predefiniowanych
  6. 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
  7. Typ wartości logicznych i operatory logiczne
    1. Operatory porównania i relacji
    2. Operatory logiczne
  8. 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. Wyszukiwanie w ciągach
      5. Manipulowanie ciągami
  9. Tablice
    1. Domyślna inicjalizacja elementów tablic
    2. Tablice wielowymiarowe
      1. Tablice regularne
      2. Tablice wyszczerbione
    3. Wyrażenia uproszczonej inicjalizacji tablic
  10. 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 (C# 7.0)
      5. Modyfikator params
      6. Parametry opcjonalne
      7. Argumenty nazwane
    5. Niejawne typowanie zmiennych lokalnych (var)
  11. 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
  12. Operatory na typach z dopuszczalną wartością pustą
    1. Operator ??
    2. Operator ?.
  13. 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 (C# 7)
    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
  14. Przestrzenie nazw
    1. Dyrektywa using
    2. Dyrektywa using static
    3. 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::
    4. Synonimy typów i przestrzeni nazw
  15. Klasy
    1. Pola
    2. Metody
      1. Metody skrócone do wyrażeń
      2. Przeciążanie metod
      3. Metody lokalne (C# 7)
    3. Konstruktory instancji
      1. Niejawne konstruktory bezparametrowe
      2. Konstruktory niepubliczne
    4. Dekonstruktory (C# 7)
    5. Inicjalizatory obiektów
    6. Referencja this
    7. 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
    8. Indeksery
      1. Implementowanie indeksera
    9. Stałe
    10. Konstruktory statyczne
    11. Klasy statyczne
    12. Finalizatory
    13. Typy i metody częściowe
      1. Metody częściowe
    14. Operator nameof
  16. 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
    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ń
  17. 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
  18. Struktury
    1. Semantyka konstrukcji struktury
  19. Modyfikatory dostępu
    1. Zaprzyjaźnianie zestawów
    2. Ograniczanie dostępności
  20. Interfejsy
    1. Rozszerzanie interfejsu
    2. Jawna implementacja interfejsu
    3. Wirtualne implementowanie składowych interfejsów
    4. Ponowna implementacja interfejsu w klasie pochodnej
  21. Typy wyliczeniowe
    1. Konwersje typów wyliczeniowych
    2. Flagi
    3. Operatory typów wyliczeniowych
  22. Typy zagnieżdżone
  23. 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
  24. Delegaty
    1. Pisanie metod-wtyczek dla delegatów
    2. Delegaty wielokrotne
    3. Delegaty do metod instancji i metod statycznych
    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
  25. Zdarzenia
    1. Standardowy schemat zdarzenia
    2. Akcesory zdarzenia
  26. Wyrażenia lambda
    1. Zmienne zewnętrzne w wyrażeniach lambda
      1. Wciąganie zmiennych iteracyjnych
  27. Wyrażenia lambda a metody lokalne
  28. Metody anonimowe
  29. Wyjątki i instrukcja try
    1. Klauzula catch
      1. Filtrowanie wyjątków
    2. Blok finally
      1. Instrukcja using
    3. Zgłaszanie wyjątków
      1. Wyrażenia zgłaszania wyjątków (C# 7)
      2. Ponowne zgłaszanie wyjątku
    4. Najważniejsze właściwości klasy System.Exception
    5. Najczęstsze wyjątki
  30. 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
  31. 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 operatorów 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
  32. Metody rozszerzające
    1. Kaskadowe wywołania metod rozszerzających
    2. Niejednoznaczność i rozstrzyganie niejednoznaczności
      1. Przestrzenie nazw
      2. Metoda rozszerzająca kontra metoda instancji
      3. Metoda rozszerzająca kontra metoda rozszerzająca
  33. Typy anonimowe
  34. Krotki (C# 7)
    1. Nazwane elementy krotek
    2. Dekonstrukcja krotek
  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
  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
  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. Tablice
      1. Słowo kluczowe stackalloc
      2. Bufory o stałym rozmiarze
    6. Typ void*
  42. Dyrektywy preprocesora
    1. Ostrzeżenia i pragma
  43. Dokumentacja XML
    1. Standardowe znaczniki dokumentacji XML
  44. O autorach

Product information

  • Title: C# 7.0
  • Author(s): Ben Albahari, Joseph Albahari
  • Release date: March 2018
  • Publisher(s): Helion
  • ISBN: 9788328340770