C# 1001 notes
رفتن به کانال در Telegram
Регулярные короткие заметки по C# и .NET. Просто о сложном для каждого. admin - @haarrp
نمایش بیشتر6 635
مشترکین
-124 ساعت
+27 روز
+8230 روز
در حال بارگیری داده...
کانالهای مشابه
ابر برچسبها
اشارات ورودی و خروجی
---
---
---
---
---
---
جذب مشترکین
سپتامبر '26
سپتامبر '26
+54
در 9 کانالها
اوت '26
+132
در 37 کانالها
Get PRO
ژوئیه '26
+102
در 41 کانالها
Get PRO
ژوئن '26
+73
در 0 کانالها
Get PRO
مه '26
+67
در 0 کانالها
Get PRO
آوریل '26
+66
در 0 کانالها
Get PRO
مارس '26
+57
در 0 کانالها
Get PRO
فوریه '26
+138
در 0 کانالها
Get PRO
ژانویه '26
+91
در 1 کانالها
Get PRO
دسامبر '25
+85
در 0 کانالها
Get PRO
نوامبر '25
+132
در 3 کانالها
Get PRO
اکتبر '25
+87
در 1 کانالها
Get PRO
سپتامبر '25
+101
در 4 کانالها
Get PRO
اوت '25
+81
در 0 کانالها
Get PRO
ژوئیه '25
+80
در 0 کانالها
Get PRO
ژوئن '25
+83
در 0 کانالها
Get PRO
مه '25
+60
در 0 کانالها
Get PRO
آوریل '25
+80
در 0 کانالها
Get PRO
مارس '25
+107
در 0 کانالها
Get PRO
فوریه '25
+105
در 0 کانالها
Get PRO
ژانویه '25
+169
در 0 کانالها
Get PRO
دسامبر '24
+202
در 1 کانالها
Get PRO
نوامبر '24
+203
در 2 کانالها
Get PRO
اکتبر '24
+364
در 1 کانالها
Get PRO
سپتامبر '24
+241
در 0 کانالها
Get PRO
اوت '24
+262
در 1 کانالها
Get PRO
ژوئیه '24
+168
در 0 کانالها
Get PRO
ژوئن '24
+398
در 2 کانالها
Get PRO
مه '24
+379
در 35 کانالها
Get PRO
آوریل '24
+304
در 43 کانالها
Get PRO
مارس '24
+314
در 20 کانالها
Get PRO
فوریه '24
+281
در 1 کانالها
Get PRO
ژانویه '24
+572
در 45 کانالها
Get PRO
دسامبر '23
+941
در 48 کانالها
Get PRO
نوامبر '23
+655
در 2 کانالها
Get PRO
اکتبر '23
+61
در 0 کانالها
Get PRO
سپتامبر '23
+80
در 0 کانالها
Get PRO
اوت '23
+507
در 0 کانالها
Get PRO
ژوئیه '23
+487
در 0 کانالها
Get PRO
ژوئن '23
+88
در 0 کانالها
Get PRO
مه '23
+569
در 0 کانالها
Get PRO
آوریل '23
+21
در 0 کانالها
Get PRO
مارس '23
+28
در 0 کانالها
Get PRO
فوریه '23
+23
در 0 کانالها
Get PRO
ژانویه '23
+28
در 0 کانالها
Get PRO
دسامبر '22
+32
در 0 کانالها
Get PRO
نوامبر '22
+31
در 0 کانالها
Get PRO
اکتبر '22
+40
در 0 کانالها
Get PRO
سپتامبر '22
+28
در 0 کانالها
Get PRO
اوت '22
+43
در 0 کانالها
Get PRO
ژوئیه '22
+321
در 0 کانالها
Get PRO
ژوئن '22
+41
در 0 کانالها
Get PRO
مه '22
+37
در 0 کانالها
Get PRO
آوریل '22
+180
در 0 کانالها
Get PRO
مارس '220
در 0 کانالها
Get PRO
فوریه '220
در 0 کانالها
Get PRO
ژانویه '220
در 0 کانالها
Get PRO
دسامبر '210
در 0 کانالها
Get PRO
نوامبر '210
در 0 کانالها
Get PRO
اکتبر '210
در 0 کانالها
Get PRO
سپتامبر '210
در 0 کانالها
Get PRO
اوت '210
در 0 کانالها
Get PRO
ژوئیه '210
در 0 کانالها
Get PRO
ژوئن '210
در 0 کانالها
Get PRO
مه '210
در 0 کانالها
Get PRO
آوریل '21
+1
در 0 کانالها
Get PRO
مارس '21
+45
در 0 کانالها
Get PRO
فوریه '21
+54
در 0 کانالها
Get PRO
ژانویه '21
+42
در 0 کانالها
Get PRO
دسامبر '20
+1 304
در 0 کانالها
| تاریخ | رشد مشترکین | اشارات | کانالها | |
| 15 سپتامبر | +1 | |||
| 14 سپتامبر | +2 | |||
| 13 سپتامبر | +4 | |||
| 12 سپتامبر | +3 | |||
| 11 سپتامبر | +1 | |||
| 10 سپتامبر | +1 | |||
| 09 سپتامبر | +3 | |||
| 08 سپتامبر | +8 | |||
| 07 سپتامبر | +5 | |||
| 06 سپتامبر | +4 | |||
| 05 سپتامبر | +1 | |||
| 04 سپتامبر | +3 | |||
| 03 سپتامبر | +2 | |||
| 02 سپتامبر | +6 | |||
| 01 سپتامبر | +10 |
پستهای کانال
# C# 14: конкурентный кеш без race condition
Реализуйте потокобезопасный кеш:
public sealed class AsyncCache<TKey, TValue>
where TKey : notnull
{
public Task<TValue> GetOrCreateAsync(
TKey key,
Func<CancellationToken, Task<TValue>> factory,
CancellationToken cancellationToken = default)
{
// TODO
}
}
Условия: если 100 потоков одновременно запросят один key, factory должна выполниться только один раз. Остальные ждут тот же Task. Если вычисление завершилось ошибкой - запись удаляется из кеша. Отмена одного клиента не должна отменять работу для остальных. Глобальный lock использовать нельзя.
Вопрос: как избежать race condition между созданием общего Task и удалением упавшего значения из кеша?| 2 | 🔍Тестовое собеседование с Senior C# разработчиком уже завтра
15 сентября(уже завтра!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle C# разработчика.
Как это будет:
📂 Александр Моргунов, старший C# разработчик с опытом 7+ лет в Европейских высоконагруженных сервисах, будет задавать реальные вопросы и задачи разработчику-добровольцу
📂 Александр будет комментировать каждый ответ респондента, чтобы дать понять, чего от вас ожидает собеседующий на интервью
📂 В конце можно будет задать любой вопрос Александру
Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для C# разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.
Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_csharp_bot
Реклама.
О рекламодателе. | 734 |
| 3 | 🔧 Как передать многострочный PEM через Aspire в ASP.NET Core
Сертификаты и ключи в PEM содержат переносы строк, которые могут создавать проблемы при передаче через параметры Aspire. Damien Bod показал обходной вариант для локальной разработки с User Secrets и развёртывания в Azure.
Схема простая:
* закодировать PEM в однострочный Base64
* сохранить значение в конфигурации AppHost под ключом Parameters:ИмяПараметра
* объявить приватный ключ через AddParameter(..., secret: true)
* передать параметр приложению через WithEnvironment
* в ASP.NET Core декодировать Base64 обратно в исходный PEM
В статье есть helper-класс для преобразования, настройка AppHost и пример создания сертификата через X509Certificate2.CreateFromPem.
Base64 сохраняет переносы строк при передаче. Приватный ключ после кодирования остаётся секретом: Base64 не обеспечивает шифрование.
https://damienbod.com/2026/09/01/using-multiline-parameters-for-aspire-and-asp-net-core-with-user-secrets-and-azure-default-deployments/ | 1 097 |
| 4 | Согласны ? | 1 202 |
| 5 | ⚡️ Задачи с технических собеседований в одном репозитории
Tech-OA-Interview-Questions - подборка задач из онлайн-тестирований и интервью в технологических компаниях. Пригодится для подготовки к алгоритмическим этапам отбора.
OA, или Online Assessment, - тестирование, которое кандидат обычно проходит перед собеседованиями. В репозитории собраны материалы для подготовки к таким заданиям, в том числе к отбору в Amazon.
Можно использовать как список для практики: решать задачи с таймером, оценивать сложность решения и проверять граничные случаи.
https://github.com/perixtar/Tech-OA-Interview-Questions | 1 233 |
| 6 | RabbitMQ в Production: Transactional Outbox, идемпотентность и DLQ в ASP.NET Core
Отправить сообщение в RabbitMQ несложно. Гораздо сложнее сделать так, чтобы система продолжала работать корректно в production: сообщения не терялись, не обрабатывались повторно, а ошибки не приводили к бесконечным ретраям и дублированию данных.
На открытом уроке 17 сентября в 20:00 разберем типичные проблемы при построении событийно-ориентированных систем и рассмотрим проверенные подходы к их решению. Поговорим о паттерне Transactional Outbox, идемпотентности, и покажем, как Dead Letter Queue (DLQ) помогает работать с ошибками. Примеры на ASP.NET Core и RabbitMQ, но подходы применимы и к другим брокерам.
Урок для backend-разработчиков, строящих микросервисные архитектуры, и инженеров, желающих довести event-driven системы до промышленной надежности.
👉 Записаться: https://otus.pw/PWKD/?erid=2W5zFHxScpR
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963. | 856 |
| 7 | ✔️ Polly становится платной, но у .NET остаётся бесплатная альтернатива
Polly много лет была одной из главных библиотек .NET для устойчивости к временным сбоям: retry, timeout, fallback, rate limiting и circuit breaker.
Теперь Polly движется в сторону платной модели, но Microsoft.Resilience по-прежнему можно использовать бесплатно.
С .NET 8 работа с resilience стала заметно проще: появился новый API Polly и официальные библиотеки Microsoft для построения resilience pipelines.
Что можно настроить:
- Retry
- Fallback
- Timeout
- Rate limiting
- Circuit breaker
Хороший разбор того, как собирать устойчивые cloud-приложения на современном .NET:
https://milanjovanovic.tech/blog/building-resilient-cloud-applications-with-dotnet | 1 105 |
| 8 | .NET и Владимир: отличный повод совместить митап и выходные в городе с историей
Офлайн-мероприятий для .NET-разработчиков сейчас не так много, а тут получается приятное комбо: встреча с другими разработчиками вечером в пятницу и возможность остаться на выходные в городе с историей.
В программе доклады от разработчиков Altenar и Рови Тех (часть Т-Банка):
— Async/await — асинхронность, которую можно читать.
— Как не терять данные при асинхронной интеграции программных систем.
— EF Core + PostgreSQL: за рамками CRUD.
Кстати, ещё на митапе запланированы активности для программистов: адаптации известных игр ("Сапер", "Крестики-нолики", "Гонки"), где для победы понадобится понимание математики и вероятностей.
Участие бесплатное, а ещё можно сэкономить на проезде — организаторы разыграют несколько билетов на "Ласточку" среди участников.
Для участия в розыгрыше:
1. Зарегистрируйтесь на митап.
2. Напишите «Хочу на .NET-митап на Ласточке» на почту aleksei.korneev@altenar.com с почты, указанной при регистрации.
Итоги розыгрыша подведём 14 сентября.
Регистрируйтесь, планируйте поездку и до встречи во Владимире! | 1 166 |
| 9 | Полноценный Lisp можно уместить всего в 99 строк C.
Внутри при этом:
- 21 примитив
- REPL
- сборщик мусора Cheney GC
- числа с плавающей точкой
- указатели
- типы значений
И всё это без `struct`-тегов, без внешних библиотек и без обычных динамических аллокаций для представления объектов.
Главный трюк - NaN boxing.
IEEE 754 оставляет много битов внутри специальных NaN-значений. Их можно использовать как скрытое хранилище:
- часть битов кодирует тип
- до 48 бит можно использовать под указатель
- обычные double при этом остаются обычными числами
В итоге одно 64-битное значение может представлять и число, и указатель, и другие типы данных.
Очень красивый пример того, как устройство IEEE 754 можно использовать для построения компактного рантайма языка. | 1 275 |
| 10 | ASP .NET Core API под нагрузкой: как сделать сервис устойчивым к сбоям и росту трафика
Пока пользователей мало, API работает быстро. С ростом нагрузки запросы занимают все ресурсы, повторные обращения увеличивают нагрузку, операции продолжаются после отключения клиента, ошибки во внешних сервисах ведут к каскадным отказам.
На открытом уроке 3 сентября в 20:00 разберём защиту API. Возьмём сервис с проблемами, проведём нагрузочное тестирование, найдём узкие места и поэтапно внедрим механизмы защиты. Сравним результаты после каждого изменения. Поговорим о Rate Limiting, контроле параллельных запросов, CancellationToken, Timeout, Circuit Breaker, кешировании в Redis и предотвращении перегрузки повторными попытками.
Урок для C#-разработчиков Web API, backend-инженеров с растущей нагрузкой и всех, кто хочет перейти к production-практикам.
👉 Записаться: https://tglink.io/df8a3e9777dd3a?erid=2W5zFGZJoeZ
#реклама
О рекламодателе | 841 |
| 11 | Вышел Aspire 13.5 - обновление с упором на интерфейс и удобство повседневной разработки.
Что добавили:
- обновлённый Dashboard и новый дизайн aspire.dev
- фильтрацию логов и трассировок по тексту, времени и числам
- более понятные ошибки health-check
- загрузку файлов прямо через команды AppHost
- окна прогресса с возможностью отмены
- полноценный терминал прямо внутри Dashboard через WithTerminal()
- поддержку persistent volumes для Kubernetes
- работу с существующими Azure-ресурсами из других resource group, подписок и tenants
- установку Aspire CLI через Homebrew, WinGet, npm, Nix, mise и NuGet
Отдельно удобно, что теперь часть инфраструктурных настроек можно описывать прямо в AppHost на C# или TypeScript, без постоянного ухода в YAML.
https://devblogs.microsoft.com/aspire/whats-new-aspire-13-5/ | 1 721 |
| 12 | Как собрать production-ready CRUD на ASP.NET Core
Telerik разобрала не просто базовый CRUD, а структуру приложения, которую уже можно нормально развивать дальше.
В примере используются:
- ASP.NET Core Web API
- Entity Framework Core
- PostgreSQL
- DTO
- Service layer
- Repository pattern
- AutoMapper
- FluentValidation
- Swagger / OpenAPI
Отдельный акцент сделан на разделении ответственности.
Контроллеры не должны содержать бизнес-логику, работа с БД выносится отдельно, входные данные валидируются до выполнения операций, а DTO не дают напрямую светить наружу модели базы.
Также разбираются:
- создание и настройка проекта
- подключение PostgreSQL
- миграции EF Core
- CRUD endpoints
- обработка ошибок
- валидация
- mapping между entity и DTO
- организация структуры проекта
Хороший материал, если базовый CRUD уже умеешь писать, но хочешь привести проект к более нормальной production-структуре.
https://telerik.com/blogs/creating-production-ready-crud-application-aspnet-core
#aspnetcore #dotnet | 1 696 |
| 13 | ⚡ Race Conditions в ASP.NET Core - как они появляются и почему их сложно ловить
В статье Assis Zang разбирается, что происходит, когда несколько запросов одновременно работают с общим состоянием и начинают вмешиваться друг в друга.
Внутри:
- откуда берутся race conditions
- почему проблема может проявляться нестабильно
- как воспроизвести конкурентный доступ
- какие ошибки возникают при работе с shared state
- как использовать синхронизацию и безопасные паттерны
- почему потокобезопасность важна даже в обычном web API
Полезно для .NET-разработчиков, которые работают с многопоточностью, shared state и высоконагруженными ASP.NET Core-приложениями.
https://telerik.com/blogs/understanding-race-conditions-aspnet-core | 1 708 |
| 14 | ✔️ Hugging Face прощупывает интерес покупателей
Платформа для хостинга моделей и датасетов наняла банки, чтобы выяснить, готов ли кто-нибудь купить бизнес. Речь пока не о сделке - тестирование рынка может закончиться и новым раундом финансирования.
По данным источников, сейчас компанию оценивают примерно в 1,3 млрд долларов, тогда как в 2023 году оценка доходила до 4,5 млрд, - за три года почти в три с половиной раза ниже.
Наиболее вероятными покупателями называют нынешних инвесторов Hugging Face - Google, Amazon, Nvidia, Intel и Salesforce.
bloomberg.com
✔️ Alibaba запустила видеогенератор Wan3.0
Модель собирает тридцатисекундные ролики из текстовых документов, таблиц, презентаций и веб-страниц. В новой версии лучше работают референсы и реконструкция реальных объектов, а базовая длина ролика выросла.
Alibaba целится в производство рекламы, коротких сериалов и музыкальных клипов. До официального запуска модель была в открытой бете.
Иностранцы получают доступ к API через Alibaba Cloud. Секунда видео стоит 10 центов в 720p и 20 центов в 1080p, то есть полный тридцатисекундный ролик в 1080p обойдется в 6 долларов.
reuters.com
✔️ Antigravity теперь управляется с телефона
Агентом можно рулить со смартфона или из браузера, ничего дополнительно не устанавливая. В интерфейсе видно сессии в реальном времени, туда же ставятся задачи и оттуда проверяются результаты.
На телефон приходят уведомления, когда агент закончил работу или ждет от человека подтверждения. Подключиться можно сразу к нескольким машинам и быстро между ними переключаться, причем монитор хосту не нужен - Antigravity запускается и работает и без него.
Обновление раскатывают постепенно, первыми его получают подписчики Google AI Ultra.
antigravity.google
✔️ FDA впервые разрешило автономного робота для забора крови
Американский регулятор выдал разрешение по процедуре системе Aletta голландского стартапа Vitestro. Робот делает всю процедуру сам: накладывает жгут, дезинфицирует кожу, находит вену, вводит иглу, меняет пробирки, убирает расходники и заклеивает прокол.
Вены он ищет ближней инфракрасной съемкой, ультразвуком и допплерографией - ими же отличает вену от артерии. В клинических испытаниях на 1600 пациентах игла попадала с первой попытки в 94,5% случаев.
Aletta рассчитана на амбулаторный прием взрослых. Один оператор может вести сразу три таких аппарата.
fda.gov
✔️ В Южной Корее микроэлектроника догоняет медицину по конкурсу в ВУЗы
На фоне ИИ-бума корейские абитуриенты пошли в микроэлектронику. По данным Jongno Academy, частного центра подготовки к поступлению, средний проходной балл на профильные специальности в ведущих вузах дошел до 96,2. Медицинские факультеты, где конкурс исторически самый высокий в стране, держат 97,2.
Университеты вместе с Samsung Electronics и SK Hynix запускают целевые программы с гарантированным трудоустройством. А школьники, чтобы поступить на инженерные направления, все лето занимаются в специализированных центрах Сеула.
ft.com
@ai_machinelearning_big_data
#news #ai #ml | 1 382 |
| 15 | ⚡️Актуальные темы .NET на DotNext 2026
В .NET одновременно происходит много интересного: C# получает новые возможности, .NET 10 меняет расклад между Native AOT и JIT, а в разработке появляются ИИ-агенты, которые берут на себя часть инженерной работы.
На DotNext 2026 разберем как вещи, которые происходят на уровне машинного кода, так и вполне прикладные вопросы архитектуры и разработки.
📅 25–26 сентября, Москва + online
Выбрали 8 тем из программы, среди которых не только доклады, но и хардкорный воркшоп, чтобы показать этот диапазон:
— как заставить Transactional Outbox одновременно быть строгим и параллельным;
— зачем ASP.NET Core модульный монолит и как собрать его без микросервисов;
— где Native AOT выигрывает у JIT в .NET 10;
— что происходит с циклами, inlining и bounds checks в C# и Go;
— как меняется SDLC, когда в команде появляются ИИ-агенты;
— что принесут discriminated unions в C# 15;
— как проектировать асинхронное взаимодействие в распределенных системах (воркшоп).
Все подробности — в карточках и на сайте конференции.
🌟По промокоду csharp1001notes — персональные билеты дешевле
→ Программа DotNext
→ Купить билет | 1 807 |
| 16 | Rate Limiting и Throttling API в .NET
В ASP.NET Core есть встроенные механизмы, которые помогают защитить API от перегрузки и слишком частых запросов.
Можно ограничивать трафик:
— по IP
— по пользователю
— по endpoint
— по фиксированному окну
— через sliding window
— token bucket
— concurrency limiter
Это полезно не только против DDoS. Rate limiting помогает не дать одному клиенту забить весь сервис, защитить дорогие операции и стабилизировать нагрузку на БД и внешние API.
В .NET это можно настроить прямо в middleware без сторонних библиотек.
Хороший разбор с примерами:
https://tundehub.dev/rate-limiting-and-throttling-apis-in-net
#aspnetcore #dotnet | 1 980 |
| 17 | Архитектурные ошибки, которые совершают даже опытные C#-разработчики
Можно соблюдать SOLID, использовать паттерны и современные архитектурные подходы — и всё равно со временем получить систему, которую сложно и дорого поддерживать.
Почему так происходит? Где заканчивается хорошая архитектура и начинается оверинжиниринг? И какие решения, которые сегодня кажутся правильными, завтра становятся источником технического долга?
18 августа в 20:00 МСК на открытом вебинаре OTUS вместе с Антоном Герасименко разберём архитектурные ошибки, которые регулярно встречаются в реальных .NET-проектах.
Вы узнаете, как отличать действительно полезные архитектурные решения от «архитектуры ради архитектуры» и проектировать системы, которые можно развивать без постоянных дорогостоящих переделок.
Вебинар проходит в преддверии старта курса «C#-разработчик. Продвинутый уровень».
Регистрируйтесь: https://otus.pw/fvrf/?erid=2W5zFHT5e3T
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963. | 597 |
| 18 | ⚡️ C#-приём: не привязывай метаданные к объектам через обычный `Dictionary` — иногда нужен `ConditionalWeakTable`.
Допустим, библиотека кеширует данные о типах:
private static readonly Dictionary<Type, Metadata> Cache = new();
В обычном приложении это может годами работать без проблем.
Но если используются plugins, dynamic assemblies или unloadable AssemblyLoadContext, такой словарь способен удерживать Type, а вместе с ним — всю загруженную сборку.
И получить memory leak.
Для таких случаев в .NET есть малоизвестный:
ConditionalWeakTable<TKey, TValue>
Пример:
private static readonly ConditionalWeakTable<Type, Metadata> Cache = new();
static Metadata GetMetadata(Type type)
{
return Cache.GetValue(type, BuildMetadata);
}
Ключ здесь хранится слабо.
Если Type больше нигде не нужен, GC может его собрать, а связанная запись автоматически исчезнет из таблицы.
Это особенно полезно для:
* reflection-кешей;
* proxy/framework-кода;
* source/runtime metadata;
* plugin-систем;
* приложений с AssemblyLoadContext.
🔥 Если видишь:
static Dictionary<Type, ...>
или
static ConcurrentDictionary<Type, ...>
в коде, который работает с динамически загружаемыми сборками, стоит проверить:
не удерживает ли этот кеш сборки в памяти навсегда?
Иногда правильный ответ — ConditionalWeakTable.
#CSharp #DotNet #Backend #Programming #CLR | 2 137 |
| 19 | 🎓 Скоро заканчивается прием документов на онлайн-магистратуру ИТМО в партнерстве с Яндекс Практикумом «Фронтенд-, бэкенд‑разработка и ИИ‑решения»
Это двухлетняя программа, где обучение проходит полностью онлайн с лекциями по вечерам. Нагрузка адаптируется под ваш уровень, сохраняются все статусы и льготы очной формы. После выпуска выдается диплом магистра ИТМО и диплом о профпереподготовке от Яндекса.
Что внутри:
• 9 треков на выбор по уровню и стеку: 4 базoвых (JS, Python, Java, C++) и 5 продвинутых — с упором на асинхронность, микросервисы, высокое нагружение, Kafka, C++/Boost, NestJS, Spring Boot.
• Упор на практику на основе реальных задач партнеров программы и сервисов Яндекса, также есть возможность вести собственный рабочий проект. На выходе получите 10+ кейсов в портфолио.
• Интеграция ИИ в разработку: автоматизация рутинных задач (генерация кода, написание тестов, дебаггинг, документация) и промпт-инжиниринг на всех треках.
• Специализированный трек «ИИ-решения в разработке»: проектирование систем на базе LLM, сборка RAG-пайплайнов, работа с мультиагентными сетями и внедрение AI-компонентов в продакшен.
Подать заявление можно также онлайн. Отбор проходит одним из способов: по рекомендательному письму для выпускников курсов Практикума или через вступительные экзамены.
📌 Подробности о программе. | 1 332 |
| 20 | 🚀 C# 15 меняет подход к `unsafe`: указатели больше не означают автоматически опасный код
Раньше в C# сам факт использования указателя требовал:
unsafe
{
int* ptr;
}
Теперь язык движется к более точной модели:
опасным считается не наличие указателя, а операция, которая реально работает с unmanaged-памятью.
В preview-версии C# 15 уже не требуют unsafe:
✅ объявление pointer-типа
✅ получение адреса через &
✅ fixed для закрепления памяти
✅ преобразование stackalloc в указатель
✅ sizeof для unmanaged-типов
Пример:
int number = 42;
int* pointer = &number;
int[] numbers = [10, 20, 30];
fixed (int* first = numbers)
{
// само закрепление памяти безопасно
}
Но вот это всё ещё требует unsafe:
*pointer; // dereference
pointer->Value; // доступ через указатель
pointer[0]; // работа с элементами
delegate*<> // вызов function pointer
Главная идея:
**создать инструмент можно безопасно.
Опасно — когда начинаешь напрямую менять память.**
Это первый этап большой переработки модели безопасности C#.
Дальше ожидаются:
- requires-unsafe для отдельных членов;
- opt-in на уровне assembly;
- новый safe keyword.
C# постепенно делает unsafe-код более точечным: меньше блоков вокруг всего файла, больше внимания к реально опасным операциям.
#csharp #dotnet #programming | 1 880 |
