Skip to content

NikiforovAll/csharp_workshop

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

C# Workshop

Binder

Let's explore C#8,9 together.

catjam

Getting started

Binder

Just click "launch binder" and you ready to go.

Devcontainer

Prerequisites:

  • "ms-vscode-remote.vscode-remote-extensionpack" is installed.
  1. Open a new instance of vscode and run command palette command: "Remote Containers: Clone Repository in Container Volume"
    • ("command": "remote-containers.openRepositoryInVolume")
  2. Select GitHub and enter NikiforovAll/csharp_workshop

Manual

Clone repository and investigate on your own.

Agenda

  • notebooks\nullable-reference-types.ipynb

  • samples\scripts\nullable-reference-types.csx

  • notebooks\functions-misc.ipynb

  • samples\scripts\null-coalescing-assignment.csx

  • samples\scripts\static-local-functions.csx

  • samples\scripts\static-anonymous-functions.csx

  • samples\scripts\lambda-discards.csx

  • notebooks\async-streams.ipynb

  • samples\projects\get-enumerator-foreach

  • notebooks\ranges-indexes.ipynb

  • notebooks\using-declarations.ipynb

  • notebooks\pattern-matching.ipynb

  • samples\scripts\pattern-matching\pattern-matching-demo1.csx

  • samples\scripts\pattern-matching\pattern-matching-demo2.csx

  • notebooks\records.ipynb

  • samples\scripts\records.csx

  • samples\scripts\records-demo1.csx

  • samples\scripts\records-demo2.csx

  • samples\scripts\target-typed-new-expressions.csx

  • notebooks\top-level-statements.ipynb

  • samples\projects\simple-webapi\

  • notebooks\module-initializers.ipynb

  • samples\projects\module-init

  • notebooks\source-generators.ipynb

Talk

  • Why do we need particular feature?
    • How does it improve your code?

Plan

  • ➕ Развитие C# в контексте современных языков программирования
  • ➕ Ссылочные типы, допускающие значение null C#8
  • ➕ Выражения. C#7,8,9
  • ➕ Сопоставление шаблонов C#7,8,9
  • ➕ Выражения switch C#8
  • ➕ Литеральные выражения default С#7
  • ➕ Присваивание объединения со значением NULL C#8
  • ➕ Выражения throw C#7
  • ➖ Условные выражения ref C#7.2
  • ➖ Условное выражение с целевым типом C#9
  • ➕ Индексы и диапазоны C#8
  • ➕ Асинхронные последовательности/потоки. Асинхронные высвобождаемые типы C#8
  • ➖ Деконструкция типов C#7,9
  • ➖ Кортежи и пользовательские типы C#7
  • ➕ Поддержка расширения GetEnumerator для циклов foreach С#9
  • ➕ Локальные функции C#7,8
  • ➕ Статические анонимные функции C#9
  • ➕ Атрибуты локальных функций C#9
  • ➕ Параметры удаления (discards) лямбда-выражения C#9
  • ➕ Объявления using C#8
  • ➖ Члены доступные только для чтения C#8
  • ➖ Методы интерфейса по умолчанию C#8
  • ❔ Ковариантные возвращаемые типы C#9
  • ➕ Методы назначения (setters) только инициализации C#9
  • ➕ Записи (Record types) C# 9
  • ➕ Новые выражения целевого типа C#9
  • ➕ Генераторы кода C#9
  • ➕ Инициализаторы модулей C#9
  • ➕ Инструкции верхнего уровня C#9

Reference