ch
Feedback

不要被骗子欺骗!Telemetrio 会找到并标记这些频道 👉 如果想查看标记,请订阅

C# (C Sharp) programming

C# (C Sharp) programming

前往频道在 Telegram

По всем вопросам- @notxxx1 Реестр РКН: https://clck.ru/3Fk3kb #VRHSZ

显示更多

📈 Telegram 频道 C# (C Sharp) programming 的分析概览

频道 C# (C Sharp) programming (@csharp_ci) 俄语 语言赛道中的 是活跃参与者。目前社区聚集了 18 024 名订阅者,在 技术与应用 类别中位列第 7 242,并在 俄罗斯 地区排名第 36 510 位。

📊 受众指标与增长动态

自 невідомо 创建以来,项目保持高速增长,吸引了 18 024 名订阅者。

根据 29 十月, 2026 的最新数据,频道保持稳定运转。过去 30 天订阅人数变化为 -54,过去 24 小时变化为 -9,整体触达仍然可观。

  • 认证状态: 未认证
  • 互动率 (ER): 平均受众互动率为 15.19%。内容发布后 24 小时内通常能获得 8.07% 的反应,占订阅者总量。
  • 帖子覆盖: 每篇帖子平均可获得 2 738 次浏览,首日通常累积 1 455 次浏览。
  • 互动与反馈: 受众积极参与,单帖平均反应数为 0。
  • 主题关注点: 内容集中在 .net, api, логика, архитектура, string 等核心主题上。

📝 描述与内容策略

作者将该频道定位为表达主观观点的平台:
“По всем вопросам- @notxxx1 Реестр РКН: https://clck.ru/3Fk3kb #VRHSZ”

凭借高频更新(最新数据采集于 30 十月, 2026),频道始终保持新鲜度与高覆盖。分析显示受众积极互动,使其成为 技术与应用 类别中的关键影响点。

18 024
订阅者
-924 小时
-397 天
-5430 天
帖子存档
🎮 Unity-разработчик? Пора на новый уровень! Пройди тест, подтверди свои знания и стань студентом курса со скидкой до 20% по
🎮 Unity-разработчик? Пора на новый уровень! Пройди тест, подтверди свои знания и стань студентом курса со скидкой до 20% по промокоду UNITYPRO_10: https://tglink.io/fa845981272c 🧠 Что ты узнаешь: - Применение принципов SOLID и паттернов GRASP на практике - Навыки выявления и устранения антипаттернов в коде - Разработка модульной архитектуры и повторно используемого кода - Создание систем загрузки, сохранения и ИИ - Освоение фреймворков Zenject и LeoECS - Работа с Addressables и подходом Test Driven Development ⏰ Скорее проходи вступительный тест и получай выгодное предложение: https://tglink.io/fa845981272c?erid=2W5zFGzF6F2 #реклама О рекламодателе

🧹 Разделение классов на отдельные файлы в ReSharper — автоматически Если вы работаете с большими C#‑файлами, где собрано по 3–5 классов в одном месте, ReSharper теперь позволяет разнести все классы по отдельным файлам в один клик. 🔧 Что умеет: ▪️ Автоматически определяет все вложенные классы, интерфейсы, enum’ы ▪️ Создаёт новые `.cs`‑файлы с соответствующими именами ▪️ Упрощает навигацию и соблюдение best practices 📌 Где искать: Refactor This → Move to Separate Files или Context Action (Alt+Enter) → Move All Types to Separate Files 📎 Инструкция от JetBrains: https://www.jetbrains.com/help/resharper/Move_classes_into_separate_files_in_one_go.html 💡 Подходит для чистки легаси-кода и ускорения навигации в больших проектах .NET. #CSharp #ReSharper #Refactoring #JetBrains #DotNet #DevTools #CodeQuality

ХОЧЕШЬ ПОВЫСИТЬ ГРЕЙД В 2025 ГОДУ? 🚀 Чтобы стать Senior C# разработчиком сегодня, нужно не только знать язык программировани
ХОЧЕШЬ ПОВЫСИТЬ ГРЕЙД В 2025 ГОДУ? 🚀 Чтобы стать Senior C# разработчиком сегодня, нужно не только знать язык программирования и фреймворки. Нужно уметь строить гибкую архитектуру приложения, которую легко тестировать и менять под задачи бизнеса. Стань экспертом в построении гибкой архитектуры приложения! 👉 Стартуем 2 июня. Курс ведет действующий архитектор и Principal Engineer Кирилл Ветчинкин. Ты научишься: ✅ Разбивать приложение на слои в соответствии с Clean Architecture ✅ Формировать Domain Model и применять тактические паттерны DDD ✅ Реализовывать Use Case как Command/Query ✅ Делать синхронные и асинхронные интеграции, не загрязняя ядро приложения ✅ Писать 3 вида тестов для разных слоев приложения Полная программа ТУТ 👉 https://microarch.ru/courses/ddd?utm_source=posev&utm_medium=erid:2VtzqwTjbcd&utm_campaign=3 А главное — ты с нуля разработаешь и запустишь микросервис, который максимально приближен к реальности "Диспетчеризация заказов на курьеров". Это будет крутым проектом в портфолио или основой для рабочих задач. А еще: ✅ Проверим все домашки ✅ Поддержим в чате ✅ Проведем живые разборы ✅ Ответим на все вопросы 📕 Сертификат об участии по итогам прохождения курса. 🔥 Не откладывай свой рост на потом: https://microarch.ru/courses/ddd?utm_source=posev&utm_medium=erid:2VtzqwTjbcd&utm_campaign=3 Реклама. ИП Ветчинкин К.Е. ИНН: 773376451099 Erid: 2VtzqwTjbcd

📒 .NET Interactive — мультиязычные интерактивные блокноты от Microsoft. Для разработчиков, уставших переключаться между Jupy
📒 .NET Interactive — мультиязычные интерактивные блокноты от Microsoft. Для разработчиков, уставших переключаться между Jupyter и IDE инструмент предлагает необычное решение — блокноты, где в соседних ячейках могут работать C#, Python, SQL и даже PowerShell. Проект поддерживает обмен переменными между языками: например, результат SQL-запроса можно сразу передать в DataFrame на C#. Основа технологии — движок, который работает как в Visual Studio Code, так и в классическом Jupyter. Особенно удобно для ETL-задач: можно собрать весь пайплайн в одном файле, от загрузки данных через KQL до визуализации на R. 🤖 GitHub @csharp_ci

🌐 Squidex — автономный CMS с открытым исходным кодом. Этот проект переосмысливает традиционный подход к системам управления
🌐 Squidex — автономный CMS с открытым исходным кодом. Этот проект переосмысливает традиционный подход к системам управления контентом, предлагая вместо готового интерфейса мощный API с поддержкой OData-фильтров и Swagger-спецификаций. Разработчики могут использовать Squidex как основу для сайтов, мобильных приложений или серверных решений, сохраняя полный контроль над фронтендом. Система построена на ASP.NET Core с архитектурой CQRS и работает как на Windows, так и на Linux. В отличие от аналогов, Squidex не навязывает конкретную клиентскую часть — вы сами решаете, как визуализировать контент. 🤖 GitHub @csharp_ci

Разработчики, девопсы, сисадмины: 📲 внимание, внимание! Похоже, эпоха открытого исходного кода идёт к концу: одна за одной н
Разработчики, девопсы, сисадмины: 📲 внимание, внимание! Похоже, эпоха открытого исходного кода идёт к концу: одна за одной наши любимые бесплатные C#-библиотеки становятся платными. И что же теперь делать? Давайте соберёмся вместе и подумаем. Приглашаем вас на открытую онлайн-дискуссию «Библиотеки C# уходят в платную сферу: конец эры опенсорса?» 📌Узнаете, какие библиотеки уже стали платными и что ждёт экосистему дальше 📌Узнаете, чем конкретно можно заменить ту или иную библиотеку 📌Сможете уменьшить лицензионные риски 📌Сможете вовремя изменить карьерный вектор или поменять архитектуру проектов 📌 Получите экспертные рекомендации по архитектуре и устойчивым решениям Спикеры: 👨‍💻Олег Голенищев – старший разработчик в Directum 👨‍💻Антон Герасименко – ведущий .NET-разработчик. Всем участникам – скидка 7% на любой курс OTUS и подборка альтернативных библиотек с открытым исходным кодом в подарок. 27 мая, 19:00 МСК Бесплатно по записи: https://tglink.io/39efef377046 Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963. erid: 2W5zFH1Pw5J

🌐 Squidex — автономный CMS с открытым исходным кодом. Этот проект переосмысливает традиционный подход к системам управления
🌐 Squidex — автономный CMS с открытым исходным кодом. Этот проект переосмысливает традиционный подход к системам управления контентом, предлагая вместо готового интерфейса мощный API с поддержкой OData-фильтров и Swagger-спецификаций. Разработчики могут использовать Squidex как основу для сайтов, мобильных приложений или серверных решений, сохраняя полный контроль над фронтендом. Система построена на ASP.NET Core с архитектурой CQRS и работает как на Windows, так и на Linux. В отличие от аналогов, Squidex не навязывает конкретную клиентскую часть — вы сами решаете, как визуализировать контент. 🤖 GitHub @csharp_ci

Что выведет на экран этот код?
Anonymous voting

#ПятничныйКвиз
#ПятничныйКвиз

🔍 OmniSharp — интеллектуальная подсказка для C# без Visual Studio. Этот движок на базе Roslyn превращает любой редактор кода
🔍 OmniSharp — интеллектуальная подсказка для C# без Visual Studio. Этот движок на базе Roslyn превращает любой редактор кода в полноценную C#-IDE. В отличие от монолитных решений, он работает как отдельный сервер, предоставляя автодополнение, навигацию по коду и анализ проектов даже в минималистичных средах разработки. Проект запускается под .NET 6 на Windows и через Mono на Linux/macOS. Интеграция с редакторами занимает буквально пару строк конфига, а сборки из мастер-ветки доступны сразу после каждого коммита. 🤖 GitHub @csharp_ci

🚀 GitHub Copilot Upgrade for .NET — AI-инструмент для миграции проектов Microsoft запустила GitHub Copilot app modernization
🚀 GitHub Copilot Upgrade for .NET — AI-инструмент для миграции проектов Microsoft запустила GitHub Copilot app modernization – Upgrade for .NET, расширение для Visual Studio, которое помогает автоматизировать обновление ваших .NET-приложений на новые версии (например, .NET 8 и далее) :contentReference[oaicite:0]{index=0}. ✨ Как это работает: 1. Определение цели В чате Copilot вы указываете, что хотите обновить (например, "Upgrade my solution to .NET 8") :contentReference[oaicite:1]{index=1}. 2. Умный план обновления Сначала создаётся план миграции — анализируется зависимостная структура и порядок обновления проектов учитывается автоматически :contentReference[oaicite:2]{index=2}. 3. Автоматический апгрейд Copilot применяет изменения: обновляет .csproj, зависимости, исправляет API-разрывы — всё выполняется автоматически :contentReference[oaicite:3]{index=3}. 4. Вовлечение разработчика Если возникают спорные моменты, инструмент запрашивает ваше вмешательство и запоминает, как вы решаете проблему, чтобы применить ту же логику в будущем :contentReference[oaicite:4]{index=4}. 5. Запуск тестов и фиксация изменений После всех преобразований запускаются unit-тесты (если есть), создаются git-коммиты — вы проверяете и сливаете изменения :contentReference[oaicite:5]{index=5}. 🛠 Почему это полезно: • Экономия времени и сил — планирует и правит код вместо вас • Минимизирует риски — вручную вы запустите тесты и проверите изменения • Адаптация под ваш стиль — Copilot учится на ваших правках • Интеграция с IDE — работает внутри Visual Studio через Agent Mode и chat-бота :contentReference[oaicite:6]{index=6}. 📋 Что входит: - Автоматические преобразования кода под новую платформу (.csproj, зависимости, API) - Гибкие настройки (проекты, управление уязвимыми пакетами и др.) - Обучение на ручных правках и повторное применение - Автоматическое создание коммитов - Запуск unit-тестов после апгрейда - Поддержка Copilot Agent Mode в Visual Studio 17.14+ и .NET workload :contentReference[oaicite:7]{index=7}. ⚡ Как начать: 1. Установите расширение “GitHub Copilot app modernization – Upgrade for .NET” из Marketplace 2. Включите Agent Mode в Visual Studio (Tools → GitHub → Copilot Chat → Agent Mode) 3. Включите инструмент Upgrade в Copilot Chat 4. Либо нажмите правой кнопкой на решение → “Upgrade with GitHub Copilot” Либо напишите в чате: “Upgrade my solution to .NET 8” :contentReference[oaicite:8]{index=8}. https://devblogs.microsoft.com/dotnet/github-copilot-upgrade-dotnet/

🧠 ArtificialCast — магия трансформаций на базе LLM в .NET ArtificialCast — это экспериментальная библиотека для .NET, котора
🧠 ArtificialCast — магия трансформаций на базе LLM в .NET ArtificialCast — это экспериментальная библиотека для .NET, которая превращает преобразование объектов в интеллектуальный процесс с помощью больших языковых моделей. 🚀 Что умеет: • Автоматически преобразует объекты между типами • Не требует ручного маппинга или конфигураций • Использует LLM (например, Gemma 3 4B) для адаптации несовместимых структур • Генерирует JSON-схемы для целевых типов 🧪 Примеры:

var result = await AC<LegacyUserDTO, NewUserModel>(legacyUser);
— преобразует старую DTO-модель в новую без ручной работы

var request = new MathRequest { Tokens = new() { "(", "2", "+", "3", ")", "*", "4", "-", "6", "/", "3" } };
var response = await AC<MathRequest, MathResponse>(request);
— рассчитывает результат выражения и генерирует пошаговое решение ⚠️ Проект предназначен только для демонстрации — в продакшн пока не стоит запускать, но как proof-of-concept это отличная иллюстрация, как LLM могут расширять возможности .NET-разработки. 🔗 Репозиторий

📚 Модернизация .NET веб-приложений с помощью DotVVM и новой книги Томаша Герцега В свежем выпуске подкаста [The .NET Core Sh
📚 Модернизация .NET веб-приложений с помощью DotVVM и новой книги Томаша Герцега В свежем выпуске подкаста [The .NET Core Show](https://dotnetcore.show/season-7/dotnet-web-app-modernization-made-easy-with-tomas-hercegs-new-book-and-dotvvm/) Томаш Герцег — Microsoft MVP и автор фреймворка DotVVM — рассказывает, как безболезненно обновлять устаревшие .NET-приложения. 🔧 Что такое DotVVM DotVVM — это open-source MVVM-фреймворк, предназначенный для поэтапной миграции с ASP.NET Web Forms на современный .NET: - Позволяет переписывать старые приложения постепенно, без необходимости полного рефакторинга - Поддерживает .NET Framework и .NET Core - Совместим с существующей кодовой базой, не нарушая архитектуру DotVVM выступает как мост между устаревшими технологиями и современным стеком, позволяя сохранять бизнес-логику и UI. 🎧 Слушать эпизод подкаста: https://dotnetcore.show/season-7/dotnet-web-app-modernization-made-easy-with-tomas-hercegs-new-book-and-dotvvm/ #DotVVM #DotNet #WebForms #ASPNet #Modernization #TomasHerceg #SoftwareDevelopment #LegacyToModern

Вечером 29 мая состоится трансляция питерского .NET-митапа от SpbDotNet и Altenar Зрители онлайна смогут задавать вопросы спи
Вечером 29 мая состоится трансляция питерского .NET-митапа от SpbDotNet и Altenar Зрители онлайна смогут задавать вопросы спикерам. Регистрируйтесь, чтобы не потерять ссылки на трансляции и получить доступ к записям. • В 19:00 (мск) Владимир Куропатка расскажет, как добиться высокой производительности и отказоустойчивости при использовании Serilog в проектах. • В 20:30 Константин Финагин покажет, как писать простые и наглядные юнит-тесты — без тонущих в ассертах простыней кода. Подробности о докладах и митапе — на странице регистрации. Увидимся в эфире!

🧠 C# Задача: структура, интерфейс и потеря состояния Эта задача проверяет знание нюансов работы struct с интерфейсами. Поведение кажется очевидным — но только на первый взгляд. 📦 Задача

using System;

public interface ICounter
{
    void Increment();
    int Value { get; }
}

public struct Counter : ICounter
{
    private int _value;
    public void Increment()
    {
        _value++;
    }

    public int Value => _value;
}

class Program
{
    static void Main()
    {
        ICounter counter = new Counter();
        counter.Increment();
        counter.Increment();
        Console.WriteLine(counter.Value);
    }
}
❓ Что выведет код? A) 0 😎 1 C) 2 D) Ошибка компиляции 💡 Разбор Наивный ответ — 2, ведь Increment() вызывается дважды. Но! 📦 Counter — это struct, то есть value type. Когда мы присваиваем Counter переменной типа ICounter, происходит boxing — создаётся копия структуры в heap. 🔁 Каждый вызов counter.Increment() работает с новой копией, потому что интерфейс не может напрямую изменить struct без создания временного объекта. 🧱 В итоге Increment() изменяет внутреннее состояние временной копии, но не оригинального значения. ✅ Ответ: 0 🧨 Подвох Использование struct через интерфейс приводит к boxing. Вызываемые методы действуют на копии, а не на оригинале. Изменения теряются, и это не ошибка компиляции — это логическая ловушка. 🔧 Как исправить? Вариант 1: Сделать Counter классом: ```csharp public class Counter : ICounter { private int _value; public void Increment() => _value++; public int Value => _value; } public class Counter : ICounter { private int _value; public void Increment() => _value++; public int Value => _value; }``` @csharp_ci

✍️ RoslynPad — легковесная C#-песочница с интеллектуальным кодом. Этот кроссплатформенный редактор превращает написание C#-ко
✍️ RoslynPad — легковесная C#-песочница с интеллектуальным кодом. Этот кроссплатформенный редактор превращает написание C#-кода в интерактивный процесс. В отличие от громоздких IDE, здесь есть только самое нужное: автодополнение на базе Roslyn, подсветка ошибок и быстрый запуск кода. Проект особенно удобен для экспериментов: можно тестировать фрагменты кода без создания полноценного проекта. Под капотом у инструмента движок компилятора C# и редактор AvalonEdit с поддержкой темной темы. 🤖 GitHub @csharp_ci

💡 20 мая в 20:00 пройдет бесплатный вебинар "Реализация инвентаря в Unity" с экспертом, выпустившим 360+ студентов в GameDev
💡 20 мая в 20:00 пройдет бесплатный вебинар "Реализация инвентаря в Unity" с экспертом, выпустившим 360+ студентов в GameDev. Запись: https://otus.pw/DKth/ 💯 Инвентарь — одна из ключевых механик в RPG, survival-играх и даже мобильных проектах. Но 90% разработчиков делают её без возможности масштабирования. Мы это исправим! Основные темы урока: 📍 Создание на основе реального технического задания. 📍Реализация предмета от простого к сложного. 📍 Реализация инвентаря. 📍 Эффекты предметов. 📈 Вебинар будет полезен:  - Unity-разработчикам уровня Junior/Junior+. - Middle Unity-разработчикам. - Программистам на C#, желающим перейти в GameDev.  - Инди-разработчикам. 🎁 Переходите на сайт, чтобы зарегистрироваться на вебинар 20 мая и получить запись предыдущего вебинара: https://otus.pw/DKth/ erid: 2W5zFGDdjV2

✔️ Режим агента теперь доступен в публичной предварительной версии для всех пользователей в Visual Studio 17.14. Режим агента в Visual Studio позволяет задавать задачи с помощью естественного языка — Copilot самостоятельно планирует действия, редактирует кодовую базу, вызывает инструменты и итеративно решает проблемы. В отличие от Copilot Chat или Copilot Edits, агент не останавливается на одной подсказке или правке файла — он действует автономно и выполняет задачу до конца. https://devblogs.microsoft.com/visualstudio/agent-mode-has-arrived-in-preview-for-visual-studio/ @csharp_ci

🚀 NBomber — нагрузочное тестирование на .NET без привязки к протоколам. Этот фреймворк позволяет описывать сценарии нагрузоч
🚀 NBomber — нагрузочное тестирование на .NET без привязки к протоколам. Этот фреймворк позволяет описывать сценарии нагрузочного тестирования на чистом C#/F#, без изучения специализированного DSL. Ключевая особенность проекта в распределённом режиме для имитации реалистичной нагрузки и интеграция с Grafana/InfluxDB для мониторинга в реальном времени. При этом сценарии можно запускать как консольное приложение или даже как xUnit-тесты в CI/CD. 🤖 GitHub @csharp_ci

🛠️ Задача с подвохом: Ленивая инициализация и ловушка многопоточности Условие: У вас есть следующий код:

using System;
using System.Threading;

class Program
{
    static Lazy<HeavyObject> _heavy = new Lazy<HeavyObject>(() =>
    {
        Console.WriteLine($"[{Thread.CurrentThread.ManagedThreadId}] Initializing HeavyObject...");
        return new HeavyObject();
    });

    static void Main()
    {
        for (int i = 0; i < 5; i++)
        {
            new Thread(() =>
            {
                Console.WriteLine($"[{Thread.CurrentThread.ManagedThreadId}] Accessing HeavyObject...");
                var obj = _heavy.Value;
            }).Start();
        }

        Console.ReadLine();
    }
}

class HeavyObject
{
    public HeavyObject()
    {
        Thread.Sleep(1000);  // эмуляция долгой инициализации
        Console.WriteLine($"[{Thread.CurrentThread.ManagedThreadId}] HeavyObject created.");
    }
}
❓ Вопрос: Сколько раз вы увидите сообщение Initializing HeavyObject... и HeavyObject created.? Почему это может удивить даже опытных .NET разработчиков? 🔍 Разбор: На первый взгляд вы ожидаете, что: - `Lazy<T>` гарантирует **ленивую инициализацию один раз** даже при многопоточном доступе. - Сообщение `Initializing HeavyObject...` и конструктор `HeavyObject` сработают только один раз. Но! Тут есть подвох. По умолчанию `Lazy<T>` использует **LazyThreadSafetyMode.ExecutionAndPublication**. Это гарантирует, что даже если несколько потоков обращаются к `.Value` одновременно, объект будет инициализирован **только один раз**. ✅ **Ожидаемый вывод:** - Каждый поток пишет `Accessing HeavyObject...` - Только один поток пишет `Initializing HeavyObject...` и `HeavyObject created.` - Остальные потоки дождутся завершения и получат уже готовый объект. Примерный вывод: ``` [4] Accessing HeavyObject... [5] Accessing HeavyObject... [6] Accessing HeavyObject... [7] Accessing HeavyObject... [8] Accessing HeavyObject... [4] Initializing HeavyObject... [4] HeavyObject created. ``` 🌀 **Подвох, если сменить режим:** Если вы немного измените код вот так: ```csharp static Lazy<HeavyObject> _heavy = new Lazy<HeavyObject>( () => { Console.WriteLine($"[{Thread.CurrentThread.ManagedThreadId}] Initializing HeavyObject..."); return new HeavyObject(); }, LazyThreadSafetyMode.None // без потокобезопасности ); ``` То при **одновременном** доступе к `.Value` вы получите **несколько инициализаций** (по сути гонку потоков). Примерный вывод может быть таким: ``` [4] Accessing HeavyObject... [5] Accessing HeavyObject... [6] Accessing HeavyObject... [4] Initializing HeavyObject... [5] Initializing HeavyObject... [6] Initializing HeavyObject... [4] HeavyObject created. [5] HeavyObject created. [6] HeavyObject created. ``` Итого объект будет создан несколько раз, что ломает инварианты "Lazy должен создавать объект один раз". ✅ **Вывод:** • По умолчанию `Lazy<T>` **потокобезопасен**, но важно понимать, что это можно **изменить**. • При работе с многопоточностью в .NET всегда обращайте внимание на **режим LazyThreadSafetyMode**. • Даже опытные разработчики могут не заметить подвоха, если кто-то по ошибке или из оптимизаций использует `LazyThreadSafetyMode.None`. 💡 **Бонус-вопрос:** Что произойдёт, если ваш factory-метод (лямбда) выбросит исключение при инициализации? Как `Lazy<T>` поведёт себя при следующем доступе к .Value? @csharp_ci