Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/nikiforovall/csharp_workshop
Materials to learn new features of C#8,9.
https://github.com/nikiforovall/csharp_workshop
csharp csharp-8 csharp-9 dotnet dotnet-core dotnet-interactive jupyter-notebook
Last synced: 19 days ago
JSON representation
Materials to learn new features of C#8,9.
- Host: GitHub
- URL: https://github.com/nikiforovall/csharp_workshop
- Owner: NikiforovAll
- Created: 2020-10-06T22:32:30.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2020-12-02T19:08:09.000Z (almost 4 years ago)
- Last Synced: 2024-10-10T19:40:14.614Z (about 1 month ago)
- Topics: csharp, csharp-8, csharp-9, dotnet, dotnet-core, dotnet-interactive, jupyter-notebook
- Language: Jupyter Notebook
- Homepage: https://bit.ly/3FsDDeX
- Size: 2.22 MB
- Stars: 5
- Watchers: 4
- Forks: 3
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# C# Workshop
[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/NikiforovAll/csharp_workshop/main)
Let's explore *C#8,9* together.
![catjam](./guide/catjam.gif)
## 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
*
*
*