Nowoczesny C#

Zarejestruj tutaj lub napisz bezpośrednio

Opis

Program kursu obejmuje zagadnienia związane z nowoczesnym językiem C#, pozwalającym na tworzenie rozwiązań z wykorzystaniem zarówno obiektowego jak i funkcyjnego podejścia. Celem szkolenia jest przedstawienie wybranych elementów programowania funkcyjnego oraz ich powiązanie z konkretnymi elementami języka C# kilku ostatnich wersji.

Czas trwania: 3 dni

Szczegóły

  • C# 2 / C# 3 LINQ
    • Typy generyczne, delegaty, iteratory
    • Metody rozszerzające, wyrażenia lambda, inicjalizator obiektów/kolekcji, typy anonimowe, var
    • Operatory LINQ
  • C# 6
    • Inicjalizatory automatycznie implementowanych właściwości
    • Operator nameof
    • Inicjalizator indexerów
    • Interpolacja napisów
    • Propagator wartości null
    • Filtry wyjątków
    • Jedno wyrażeniowe składowe klasy
    • Await w sekcji catch/finally
    • Statyczny import
  • C# 7
    • Krotki oraz dekonstrukcje
    • Dopasowanie do wzorca
    • Funkcje lokalne
    • Zmienne deklarowane za pomocą out
    • Throw jako wyrażenie
  • C# 7.1, 7.2, 7.3
    • Asynchroniczna metoda Main
    • Dopasowanie do wzorca i typy generyczne
    • Wnioskowanie nazwanych krotek
    • Modyfikator dostępu private protected
  • C#8
    • Rozszerzenia dla dopasowania do wzorca
    • Nullowane typy referencyjny
    • Asynchroniczne strumienie
    • Domyślnie implementowane składowe interfejsów
    • Switch jako wyrażenie
    • Przedziały
  • C#9
    • Rozszerzenia dla dopasowania do wzorca
    • Rekordy
    • Settery typu init
    • Start aplikacja bez Program.Main
    • Operator new bez nazwy typu
    • Argument wyrażenia lambda _
    • Wsparcie dla metod rozszerzających GetEnumerator dla pętli foreach
  • C#10
    • Usprawniania dla rekordów, typów wartościowych, wyrażeń lambda oraz dekonstrukcji
    • Rozszerzenia dla dopasowania do wzorca
    • Przestrzenie nazw o zasięgu plikowym oraz globalne importowanie przestrzeni nazw
  • Wybrane elementy programowania funkcyjnego
    • funkcja jako wartość, domknięcie, funkcje wyższego rzędu, kompozycja funkcji, częściowe zaaplikowanie argumentów funkcji, “currying”
    • leniwa ewaluacja, sekwencje
    • imperatywne vs deklaratywne programowanie
    • obiektowa vs funkcyjna organizacja kodu
    • dopasowanie do wzorca
    • algebraiczne typy danych (krotki, rekordy, “sum types”)
    • opcjonalność, obsługa błędów
    • niezmienniczość, efekty uboczne, czyste funkcje