C# (C Sharp) programming
前往频道在 Telegram
По всем вопросам- @notxxx1 Реестр РКН: https://clck.ru/3Fk3kb #VRHSZ
显示更多📈 Telegram 频道 C# (C Sharp) programming 的分析概览
频道 C# (C Sharp) programming (@csharp_ci) 俄语 语言赛道中的 是活跃参与者。目前社区聚集了 18 129 名订阅者,在 技术与应用 类别中位列第 7 041,并在 俄罗斯 地区排名第 36 302 位。
📊 受众指标与增长动态
自 невідомо 创建以来,项目保持高速增长,吸引了 18 129 名订阅者。
根据 29 八月, 2026 的最新数据,频道保持稳定运转。过去 30 天订阅人数变化为 -78,过去 24 小时变化为 -7,整体触达仍然可观。
- 认证状态: 未认证
- 互动率 (ER): 平均受众互动率为 15.03%。内容发布后 24 小时内通常能获得 7.44% 的反应,占订阅者总量。
- 帖子覆盖: 每篇帖子平均可获得 2 725 次浏览,首日通常累积 1 348 次浏览。
- 互动与反馈: 受众积极参与,单帖平均反应数为 0。
- 主题关注点: 内容集中在 .net, api, логика, архитектура, string 等核心主题上。
📝 描述与内容策略
作者将该频道定位为表达主观观点的平台:
“По всем вопросам- @notxxx1
Реестр РКН: https://clck.ru/3Fk3kb
#VRHSZ”
凭借高频更新(最新数据采集于 30 八月, 2026),频道始终保持新鲜度与高覆盖。分析显示受众积极互动,使其成为 技术与应用 类别中的关键影响点。
18 129
订阅者
-724 小时
-157 天
-7830 天
帖子存档
18 127
🔦 Fluent UI Blazor — библиотека компонентов от Microsoft, которая переносит фирменный Fluent Design в Blazor-приложения. Она включает готовые решения для кнопок, карточек, таблиц и сложных элементов вроде диалоговых окон, сохраняя единый стиль современных продуктов Microsoft.
Проект имеет глубокую интеграцию с .NET 8/9 и гибкость: темы настраиваются через CSS-переменные, есть поддержка RTL и адаптация под системные настройки. Для старта можно использовать готовые шаблоны
dotnet new или вручную подключить NuGet-пакеты.
🤖 GitHub
@csharp_ci18 127
Рефлексия тормозит приложения? Пора управлять компилятором!
Устали писать одинаковый код снова и снова? Рефлексия съедает производительность в рантайме, а генерация boilerplate-кода отнимает часы. Современный C# предлагает элегантное решение — заставить компилятор работать на вас.
🎥 Вебинар «Заставьте компилятор работать на вас: магия метапрограммирования с Source Generators в C#»
📅 6 августа, 20:00
👩🏫 Елена Сычева
Разберём на практике:
→ Почему рефлексия — узкое место и как Source Generators решают проблему на этапе компиляции
→ Устройство компилятора Roslyn: синтаксические деревья и семантическая модель
→ Live-coding первого Source Generator для избавления от рутинного кода
→ Применение генераторов в популярных библиотеках .NET 7+
Результат: вы научитесь создавать собственные генераторы кода, которые автоматизируют рутину и повышают производительность приложений без runtime-накладных расходов.
Вебинар проходит в рамках курса «C# углубленный» — участники получают эксклюзивные условия обучения.
→ Регистрация: https://otus.pw/1j45/
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ", ИНН: 9705100963
18 127
🧠 Model Context Protocol (MCP) для новичков — от Microsoft
Microsoft выложила в open-source обучающий курс, чтобы помочь понять, как работает Model Context Protocol — протокол, лежащий в основе взаимодействия LLM с внешним контекстом.
📘 Что внутри:
— понятные объяснения концепций MCP
— практические примеры на .NET, Java, TypeScript, JavaScript и Python
— пошаговые упражнения для начинающих
Подойдёт тем, кто хочет разобраться, как строятся LLM-агенты, функции и контекстные вызовы в MCP-экосистеме.
👉 Репозиторий: https://github.com/microsoft/mcp-for-beginners
18 127
📌 PolySharp — удобный способ использовать новые фичи C# на старых версиях .NET. Этот NuGet-пакет работает как source-генератор, автоматически подбирая нужные полифиллы в зависимости от целевой платформы. Для работы достаточно добавить ссылку на PolySharp, установить последнюю версию C# и можно писать современный код даже для .NET Framework или UWP.
Инструмент обладает умной генерацией только необходимых типов. Например, если компилятору C# 13 нужен
[IsExternalInit] для init-only свойств, PolySharp создаст его за кулисами. При этом он не трогает фичи, требующие поддержки рантайма, но покрывает огромный пласт синтаксических улучшений — от nullable-аннотаций до интерполированных строковых обработчиков.
🤖 GitHub
@csharp_ci18 127
⚡️ Почему лучшие разработчики всегда на шаг впереди?
Потому что они знают, где брать настоящие инсайд!
Оставь “программирование в вакууме” в прошлом, выбирай свой стек — подпишись и погружайся в поток идей, лайфхаков и знаний, которые не найдёшь в открытом доступе.
ИИ: t.me/ai_machinelearning_big_data
Python: t.me/pythonl
Linux: t.me/linuxacademiya
Devops: t.me/DevOPSitsec
Базы данных: t.me/sqlhub
Мл собес t.me/machinelearning_interview
C++ t.me/cpluspluc
Docker: t.me/DevopsDocker
Хакинг: t.me/linuxkalii
МЛ: t.me/machinelearning_ru
Data Science: t.me/data_analysis_ml
Javascript: t.me/javascriptv
C#: t.me/csharp_ci
Java: t.me/java_library
Python собеседования: t.me/python_job_interview
Мобильная разработка: t.me/mobdevelop
Golang: t.me/Golang_google
React: t.me/react_tg
Rust: t.me/rust_code
ИИ: t.me/vistehno
PHP: t.me/phpshka
Android: t.me/android_its
Frontend: t.me/front
Big Data: t.me/bigdatai
МАТЕМАТИКА: t.me/data_math
Kubernets: t.me/kubernetc
Разработка игр: https://t.me/gamedev
Физика: t.me/fizmat
SQL: t.me/databases_tg
Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
Папка ML: https://t.me/addlist/2Ls-snqEeytkMDgy
Папка FRONTEND: https://t.me/addlist/mzMMG3RPZhY2M2Iy
🎓954ГБ ОПЕНСОРС КУРСОВ: @courses
😆ИТ-Мемы: t.me/memes_prog
🇬🇧Английский: t.me/english_forprogrammers
🧠ИИ: t.me/vistehno
🖥 Chatgpt для кода в тг: @Chatgpturbobot -
📕Ит-книги: https://t.me/addlist/BkskQciUW_FhNjEy
💼ИТ-вакансии t.me/addlist/_zyy_jQ_QUsyM2Vi
Подпишись, чтобы всегда знать, куда двигаться дальше!
18 127
😬 Почти каждый разработчик делал эту ошибку
Код вроде бы нормальный:
- API для регистрации вызывает
UserService
- UserService сохраняет пользователя и вызывает EmailService
- EmailService отправляет письмо через SmtpClient
Но если присмотреться — SendWelcomeEmail помечен как **async void** ❗️
Почему это проблема?
❌ async void делает невозможным отлов исключений.
Если внутри SendEmailAsync() что-то пойдёт не так — try/catch не сработает.
Исключение пролетит мимо и может тихо крашнуть приложение или вызвать странные баги.
Почему так?
🔸 async void не возвращает Task, значит await невозможен
🔸 Исключения из таких методов не перехватываются обычным образом
✅ Как правильно:
Всегда возвращай Task — только так можно надёжно обрабатывать ошибки.
📌 Запомни правило:
async void допустим только в event‑handler’ах. Больше — нигде.
Ты уже сталкивался с этой ловушкой? Пиши свои фейлы или советы 👇18 127
🛠 Игра начинается: лутайте призы на сервере Selectel в Minecraft
Пока вы работаете, пиглины добывают золото в недрах Незера. Пора и вам немного развеяться: присоединяйтесь к игре на сервере Selectel. Стройте, исследуйте, конкурируйте — или просто создайте ферму из кактусов, никто не осудит.
На сервере три режима игры под разное настроение:
▪️ Ванильное выживание на нормальной сложности — бессмертная классика с мини-квестами и внутриигровыми наградами каждый день.
▪️ Креатив с пиксельными дата-центрами Selectel, гигантскими фигурками героев аниме и другими постройками.
▪️ Арена — особый режим, на котором раз в неделю будут запускать разные PVP- и PVE-события с призами.
На сервере нет и не будет донатов. Чтобы начать, достаточно установить на ПК копию Minecraft Java Edition 1.21.5 или новее, а затем зарегистрироваться ➡️
Реклама. АО «Селектел», ИНН 7810962785, ERID: 2Vtzqx834rk
18 127
🧪 ABP Framework — мощный инструмент для .NET-разработчиков, который превращает стандартный ASP.NET Core в платформу для корпоративных решений. Это не просто фреймворк, а целая экосистема с готовыми модулями, шаблонами проектов и инструментами автоматизации.
Проект имеет поддержку DDD, мультитенантности и микросервисов из коробки. ABP берет на себя рутинные задачи вроде авторизации, валидации и логирования, позволяя сосредоточиться на бизнес-логике.
🤖 GitHub
@csharp_ci
18 127
🚀 Хочешь масштабировать своё API по горизонтали? Без балансировщика нагрузки не обойтись.
Вот как быстро собрать свой на .NET с помощью YARP (Yet Another Reverse Proxy):
3 простых шага:
1. Установи библиотеку YARP (`Microsoft.ReverseProxy`)
2. Настрой YARP в
Program.cs и appsettings.json
3. Укажи пути к downstream-сервисам
После этого твой прокси уже готов к работе — будет распределять трафик между сервисами.
Но это только начало. YARP мощный и расширяемый. Он поддерживает разные политики балансировки нагрузки прямо "из коробки":
▪ Random — случайный выбор
▪ RoundRobin — по кругу
▪ LeastRequests — к тому, у кого меньше всего запросов
▪ FirstAlphabetical — по алфавиту
▪ PowerOfTwoChoices — выбери лучший из двух случайных (дефолт)
Автор статьи применил YARP для масштабирования нескольких приложений и делится опытом в полном гайде:
📖 Читай подробнее: https://milanjovanovic.tech/blog/horizontally-scaling-aspnetcore-apis-with-yarp-load-balancing18 127
😱💻 Хотите прокачать архитектурные скилы и стать востребованным fullstack-разработчиком?
Пройдите вступительный тест и получите бесплатные уроки курса «C# ASP.NET Core разработчик» от OTUS!
👉 Пройти тест: https://otus.pw/I9v5/
🚀 Зарядите карьеру: увеличьте доход, берите сложные проекты и работайте с современным стеком!
Всего за 6 месяцев вы научитесь:
• Разрабатывать веб-приложения на ASP.NET Core, рассматривая ASP.NET подробно, со всеми его механизмами
• Создавать различные технологии межсервисного взаимодействия + реалтайм с клиентским приложением
•Интегрировать фронтенд (ReactJS + JavaScript+Typescript) с бэкендом
• Тестировать приложения: интеграционные и нагрузочные тесты
• Автоматизировать процессы с CI/CD и Kubernetes
• Проектировать микросервисы и освоить event-driven архитектуру
🎁 Бонус: После теста — доступ к урокам!
👉 Проверьте свои силы прямо сейчас: https://otus.pw/I9v5/
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ", ИНН: 9705100963
18 127
🎯 Design pattern, который должен знать каждый — Decorator
Один из самых гибких и мощных паттернов — особенно в мире .NET и DI.
▪ Что это такое?
Decorator позволяет обернуть реализацию сервиса в дополнительное поведение — например, логгирование, кэширование или retry-механику — без изменения исходного кода.
▪ Как применить на практике?
В .NET это особенно удобно с библиотекой Scrutor — она расширяет встроенный DI-контейнер и позволяет добавлять декораторы в одну строчку.
Пример:
services.Decorate<IService, LoggingDecorator>();
Зачем это нужно?
— логгировать вызовы без лома архитектуры
— централизованно обрабатывать ошибки
— добавить метрики без влезания в бизнес-логику
📌 Подробнее18 127
💎 CSharpier — бескомпромиссный форматтер для C#. Этот инструмент берёт ваш код и переписывает его по своим строгим правилам, вдохновлённым Prettier. Никаких бесконечных настроек, только единый стандарт оформления для всего проекта.
Инструмент интегрируется с редакторами, работает через CLI и даже в CI/CD. Будет особенно удобен для команд, где важна единообразная кодовая база без ручной правки стиля.
🤖 GitHub
@csharp_ci
18 127
✂️ Clipper2 — библиотека для работы с полигонами. Этот проект представляет собой современную версию классической библиотеки Clipper, переписанную с нуля для поддержки новых стандартов. Инструмент выполненяет булевые операций (объединение, пересечение, вычитание) над сложными полигональными фигурами, а также их офсетное преобразование.
Библиотека имеет кроссплатформенную поддержку: помимо нативных C++, C#, Delphi-реализаций, доступны адаптации для Java, Kotlin и даже WebAssembly. При этом версия на С# демонстрирует наибольшую производительность, она идеально подходит для задач CAD-систем и GIS-приложений.
🤖 GitHub
@csharp_ci
18 127
🎯 Хитрая задача на C# для продвинутых
Твоя цель — реализовать ленивую фильтрацию по уникальному ключу без LINQ.
Условие:
Есть класс:
class User
{
public string Name { get; set; }
public int Age { get; set; }
}
Нужно написать метод UniqueBy<T, TKey>, который возвращает только уникальные элементы по ключу. Нельзя использовать LINQ (Distinct, GroupBy и т.д.). Метод должен быть ленивым — использовать yield return.
Пример:
var users = new List<User>
{
new User { Name = "Alice", Age = 30 },
new User { Name = "Bob", Age = 25 },
new User { Name = "Alice", Age = 35 },
new User { Name = "Eve", Age = 25 }
};
foreach (var user in UniqueBy(users, u => u.Name))
{
Console.WriteLine($"{user.Name}, {user.Age}");
}
// Вывод:
// Alice, 30
// Bob, 25
// Eve, 25
🧠 Решение:
public static IEnumerable<T> UniqueBy<T, TKey>(IEnumerable<T> source, Func<T, TKey> keySelector)
{
var seen = new HashSet<TKey>();
foreach (var item in source)
{
var key = keySelector(item);
if (seen.Add(key))
yield return item;
}
}
📌 Чем эта задача интересна:
▪ Требует знания HashSet, yield return и замыканий
▪ Работает с любыми коллекциями и даже бесконечными потоками
▪ Часто нужна при фильтрации API-результатов, логов и UI
Ставь лайк, если хочешь больше таких продвинутых C#-задач.18 127
Устали править копипастные участки кода и бороться с хаосом в проекте?
⏺️ Приглашаем на открытый урок «Переиспользуемый код на C#: архитектурный подход» 15 июля в 20:00 МСК. Разберём, как строить приложение по принципам SOLID, DRY, KISS и YAGNI и избавляться от дублирования на уровне архитектуры. Вы увидите, как декомпозировать систему на слои, внедрять зависимости через абстракции и собирать «Lego-приложение» для разных интерфейсов.
🔴 Встречаемся 15 июля в 20:00 МСК.
➡️ Успейте зарегистрироваться на урок количество участников ограничено: https://otus.pw/55rM/?erid=2W5zFJJBcuE
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
18 127
⚠️ Как вы обрабатываете ошибки в C#?
Многие используют исключения для управления потоком и быстрого фейла. Но в C# метод не сообщает, какие именно исключения он может выбросить — это не видно в сигнатуре.
🔍 Мой подход:
Исключения — только для исключительных ситуаций.
Если метод может ожидаемо провалиться, пусть это будет явно.
✅ Используйте Result-паттерн:
— Метод возвращает
Result<T> вместо выбрасывания исключения
— Caller обязан проверить IsSuccess и обработать ошибку
— Код становится предсказуемее и легче тестируется
— Дополнительно: пропускная способность может быть выше, чем при throw/catch
Пример:
Result<User> result = userService.FindById(id);
if (!result.IsSuccess)
return Error(result.Error);
Подробнее