uk
Feedback
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 307 підписників, посідаючи 7 338 місце в категорії Технології та додатки та 36 903 місце у регіоні Росія.

📊 Показники аудиторії та динаміка

З моменту свого створення невідомо, проект продемонстрував стрімке зростання, зібравши аудиторію у 18 307 підписників.

За останніми даними від 12 червня, 2026, канал демонструє стабільну активність. Хоча за останні 30 днів спостерігається зміна кількості учасників на -16, а за останні 24 години на 5, загальне охоплення залишається високим.

  • Статус верифікації: Не верифікований
  • Рівень залученості (ER): Середній показник залученості аудиторії становить 18.53%. Протягом перших 24 годин після публікації контент зазвичай збирає 7.49% реакцій від загальної кількості підписників.
  • Охоплення публікацій: В середньому кожен допис отримує 3 393 переглядів. Протягом першої доби публікація в середньому набирає 1 371 переглядів.
  • Реакції та взаємодія: Аудиторія активно підтримує контент: середня кількість реакцій на один пост – 0.
  • Тематичні інтереси: Контент зосереджений навколо ключових тем, таких як .net, api, логика, архитектура, string.

📝 Опис та контентна політика

Автор описує ресурс як майданчик для висловлення суб'єктивної думки:
По всем вопросам- @notxxx1 Реестр РКН: https://clck.ru/3Fk3kb #VRHSZ

Завдяки високій частоті оновлень (останні дані отримано 13 червня, 2026), канал підтримує актуальність та високий рівень охоплення публікацій. Аналітика показує, що аудиторія активно взаємодіє з контентом, що робить його важливою точкою впливу в категорії Технології та додатки.

18 307
Підписники
+524 години
-77 днів
-1630 день
Архів дописів
🚀 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

🎨 Fluent.Ribbon — WPF-библиотека для тех, кто скучает по интерфейсам в стиле Microsoft Office. Этот инструмент превратит ста
🎨 Fluent.Ribbon — WPF-библиотека для тех, кто скучает по интерфейсам в стиле Microsoft Office. Этот инструмент превратит стандартные окна в полноценную ленточную панель с вкладками, Backstage-меню и Quick Access Toolbar. Библиотека не просто копирует визуал, а адаптирует его под WPF, сохраняя гибкость: от кастомизации галерей до тонкой настройки всплывающих подсказок. Интересно, что проект живёт уже больше десяти лет и продолжает обновляться — последние версии поддерживают .NET 8 и современные IDE. 🤖 GitHub @csharp_ci

💡 13 мая в 20:00 пройдет бесплатный вебинар "Профессиональная архитектура ИИ в Unity". Научим писать гибкий, чистый и мощный
💡 13 мая в 20:00 пройдет бесплатный вебинар "Профессиональная архитектура ИИ в Unity". Научим писать гибкий, чистый и мощный ИИ-код, который легко поддерживать и расширять. Запись: https://otus.pw/s6U0p/ 😔 Многие Unity-разработчики пишут ИИ через MonoBehaviour и простые скрипты, но в реальных проектах такой подход приводит к хаосу, багам и невозможности масштабирования. 🔊 На интенсиве 13 мая в 20:00 разберём архитектурные паттерны и подходы, которые используют в AAA-студиях и коммерческой разработке. 📖 Основные темы: - архитектура ИИ - паттерны (HSM, Behaviour Tree, GOAP) - поиск пути Вебинар будет полезен: - Unity-разработчикам уровня Junior/Junior+ - Middle Unity-разработчика - Программистам на C#, желающим перейти в GameDev - Инди-разработчикам 📩  Переходите на сайт, чтобы зарегистрироваться на вебинар 13 мая и получить запись предыдущего вебинара: https://otus.pw/s6U0p/ erid: 2W5zFJoYtit

🚀 Downloader — мощный .NET-инструмент для загрузки файлов с поддержкой многопоточности. Эта библиотека не просто качает файлы, а делает это асинхронно, с возможностью разбивки на части и автоматическим ресайзом при обрывах. Что особенно удобно — Downloader работает на всех основных ОС и поддерживает .NET 8+, а также умеет показывать прогресс в реальном времени, загружать файлы прямо в память, ограничивать скорость, чтобы не перегружать канал. 🤖 GitHub @csharp_ci

МТС приглашает разработчиков на масштабную ИТ-конференцию True Tech Day 6 июня. Участие бесплатно Ключевая тема конференции в
МТС приглашает разработчиков на масштабную ИТ-конференцию True Tech Day 6 июня. Участие бесплатно Ключевая тема конференции в этом году — искусственный интеллект. Тебя ждут доклады ученых, выступления зарубежных спикеров по AI и экспертов крупных ИТ-компаний. В программе: — 4 трека и больше 40 докладов. — Выступления зарубежных спикеров с индексом Хирша более 50. — Концентрация практических кейсов: как создаются большие ML-проекты. — Доклады по архитектуре, бэкенд-разработке и построению ИТ-платформ. — AI-интерактивы и технологические квесты. — Пространство для нетворкинга, …а еще after-party со звездным лайн-апом. Когда: 6 июня Где: Москва, МТС Live Холл и онлайн Участие бесплатно. Регистрация по ссылке.

🔮 IKVM — мост между Java и .NET. Инструмент превращает скомпилированные JAR-файлы в .NET-сборки, а также помогает стандартны
🔮 IKVM — мост между Java и .NET. Инструмент превращает скомпилированные JAR-файлы в .NET-сборки, а также помогает стандартным Java-библиотекам работать как родные для C#. Особенность проекта кроется в динамической трансляции байт-кода в CIL на лету или статической компиляции в DLL. Это открывает интересные сценарии, например, использование Java-библиотек машинного обучения в .NET-приложениях или интеграция legacy-кода без полного рефакторинга. 🤖 GitHub @csharp_ci

💥 .NET MAUI библиотеки теперь автоматически публикуются через GitHub Actions Microsoft внедрила автоматическую публикацию и
💥 .NET MAUI библиотеки теперь автоматически публикуются через GitHub Actions Microsoft внедрила автоматическую публикацию и обновление NuGet-пакетов для .NET MAUI библиотек с помощью GitHub Actions. Это сделает экосистему библиотек MAUI более стабильной, прозрачной и предсказуемой. ✨ Что изменилось: - Автоматизирован процесс сборки и публикации через CI/CD pipeline - Обновления появляются на NuGet быстрее, без ручных шагов - Все исходники библиотек MAUI открыты на GitHub, с привязкой к actions-логам Упрощено тестирование новых версий через pre-release пакеты 📚 Для разработчиков это значит: - легче отслеживать новые версии и багфиксы - быстрее интегрировать свежие фичи MAUI в свои проекты - можно сразу видеть изменения в GitHub Actions workflow GitHub Actions теперь ключевая часть поставки .NET MAUI — публикация пакетов стала автоматизированной, прозрачной и быстрее для всех пользователей. ✅ Подробности: https://devblogs.microsoft.com/dotnet/dotnet-maui-libraries-github-actions/Примеры: https://github.com/dotnet/maui-samples @csharp_ci

🖥 Задача: Что выведет этот код на C\#?

using System;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        Console.WriteLine("1");
        var task = FooAsync();
        Console.WriteLine("2");
        await task;
        Console.WriteLine("5");
    }

    static async Task FooAsync()
    {
        Console.WriteLine("3");
        await Task.Delay(100);
        Console.WriteLine("4");
    }
}
Вопрос: Какой порядок чисел появится в консоли? 👇 Подумай, прежде чем смотреть ответ. — ✅ Разбор: 1. Console.WriteLine("1"); → печатает 1 2. var task = FooAsync(); → вызывается FooAsync(), который: печатает 3 доходит до await Task.Delay(100); и возвращает управление в Main (не дожидаясь задержки) 3. Console.WriteLine("2"); → печатает 2 4. await task; → теперь Main ждёт завершения FooAsync 5. после 100ms продолжает выполнение в FooAsync → печатает 4 6. возвращаемся в Main → печатает 5 🎉 Окончательный вывод: 1 3 2 4 5 📝 Что проверяет задача: - Понимание работы async/await - Как работают точки приостановки (suspension points) - Когда код возвращается в вызывающий метод #CSharp #AsyncAwait #InterviewQuestion #CodeChallenge @csharp_ci

Интересный канал про c# Канал собеседования C# - https://t.me/become_an_IT_dot_net Автор пишет про то, какие вопросы могут быть на собеседовании по c#. Есть технический контент, есть рассказы про собеседования. Канал пока молодой и активно развивается.

🖥 PowerShell-скрипт для переименования .NET-проекта Переименование .NET-проекта — занятие утомительное: нужно переименовать папки, файлы, неэмспейсы, а также заменить строки внутри .sln и .csproj файлов. Перед вами PowerShell-скрипт, который автоматизируетпеерименование: он рекурсивно переименовывает папки и файлы и заменяет содержимое внутри:

$ErrorActionPreference = "Stop"

$rootFolder = Resolve-Path -Path "."
$oldName = "Sample.Foo"
$newName = "Sample.Bar"

# Rename files and folders
foreach ($item in Get-ChildItem -LiteralPath $rootFolder -Recurse | Sort-Object -Property FullName -Descending) {
    $itemNewName = $item.Name.Replace($oldName, $newName)
    if ($item.Name -ne $itemNewName) {
        Rename-Item -LiteralPath $item.FullName -NewName $itemNewName
    }
}

# Replace content in files
foreach ($item in Get-ChildItem -LiteralPath $rootFolder -Recurse -Include "*.cmd", "*.cs", "*.csproj", "*.json", "*.md", "*.proj", "*.props", "*.ps1", "*.sln", "*.slnx", "*.targets", "*.txt", "*.vb", "*.vbproj", "*.xaml", "*.xml", "*.xproj", "*.yml", "*.yaml") {
    $content = Get-Content -LiteralPath $item.FullName
    if ($content) {
        $newContent = $content.Replace($oldName, $newName)
        Set-Content -LiteralPath $item.FullName -Value $newContent
    }
}
@csharp_ci

👾 BotSharp — фреймворк для AI-ассистентов на .NET. Этот open-source фреймворк объединяет чат-ботов, RAG-системы и мультиаген
👾 BotSharp — фреймворк для AI-ассистентов на .NET. Этот open-source фреймворк объединяет чат-ботов, RAG-системы и мультиагентные сценарии в единую платформу с модульной архитектурой. Особенность инструмента в его ориентации на корпоративные задачи: от интеграции с мессенджерами до работы с базами данных. Проект поддерживалось ChatGPT, Gemini, Claude и других LLM через единый интерфейс, встроенный UI на SvelteKit и инструменты для оценки работы моделей. 🤖 GitHub @csharp_ci

🖥 Linux — топ среди обучающих каналов для быстрого погружения Linux. Наглядные картинки и короткие видео - мы расскажем о вс
+5
🖥 Linux — топ среди обучающих каналов для быстрого погружения Linux. Наглядные картинки и короткие видео - мы расскажем о всех секртетах Linux администрирования. Подписаться: t.me/linuxacademiya

🚀 SuperSocket —высокопроизводительный фреймворк для сетевых приложений на .NET. В отличие от стандартных решений, он предлаг
🚀 SuperSocket высокопроизводительный фреймворк для сетевых приложений на .NET. В отличие от стандартных решений, он предлагает готовую инфраструктуру для работы с TCP, UDP и WebSocket, скрывая сложности низкоуровневых операций за простым API. Проект имеет модульную архитектуру с поддержкой middleware и встроенной системой команд, что позволяет легко адаптировать его для разных сценариев. Интеграция с DI-контейнером .NET и кроссплатформенность делают данный инструмент универсальным выбором для современных приложений. 🤖 GitHub @csharp_ci

🚀 Silk.NET 3.0: грядущая революция в .NET-графике Сообщество Silk.NET анонсировало работу над третьей версией своего фреймво
🚀 Silk.NET 3.0: грядущая революция в .NET-графике Сообщество Silk.NET анонсировало работу над третьей версией своего фреймворка — амбициозным переосмыслением того, как должны работать низкоуровневые .NET-биндинги для графики и мультимедиа. Особенность проекта всегда заключалась в кроссплатформенности и минимальных накладных расходах при работе с GPU. В 3.0 разработчики обещают переработанную систему биндингов и улучшенную интеграцию с современными .NET-стэками. 🤖 GitHub @csharp_ci

⚡️Легкий способ получать свежие обновления и следить за трендами в разработке на вашем языке. Находите свой стек и подписывайтесь: Python: t.me/pythonl Linux: t.me/linuxacademiya Собеседования DS: t.me/machinelearning_interview Нерйросети t.me/ai_machinelearning_big_data C++ t.me/cpluspluc Docker: t.me/DevopsDocker Хакинг: t.me/linuxkalii Devops: t.me/DevOPSitsec Data Science: t.me/data_analysis_ml Javascript: t.me/javascriptv C#: t.me/csharp_ci Java: t.me/javatg Базы данных: t.me/sqlhub 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 Haskell: t.me/haskell_tg Физика: t.me/fizmat 💼 Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy Папка ML: https://t.me/addlist/2Ls-snqEeytkMDgy Папка FRONTEND: https://t.me/addlist/mzMMG3RPZhY2M2Iy 😆ИТ-Мемы: t.me/memes_prog 🇬🇧Английский: t.me/english_forprogrammers 🧠ИИ: t.me/vistehno 🎓954ГБ ОПЕНСОРС КУРСОВ: @courses 📕Ит-книги бесплатно: https://t.me/addlist/BkskQciUW_FhNjEy

✔️ Задача. Что выведет на консоль этот пример на C#?

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        var funcs = new List<Func<int>>();

        // Первая группа лямбд
        for (int i = 0; i < 4; i++)
        {
            funcs.Add(() => i * i);
        }

        Console.Write("Squares: ");
        foreach (var f in funcs)
            Console.Write(f() + " ");

        Console.WriteLine();

        // Вторая группа лямбд с копией переменной
        funcs.Clear();
        for (int i = 0; i < 4; i++)
        {
            int j = i;
            funcs.Add(() => j * j);
        }

        Console.Write("SquaresWithCopy: ");
        foreach (var f in funcs)
            Console.Write(f() + " ");
    }
}
Ответ: Squares: 16 16 16 16 SquaresWithCopy: 0 1 4 9 Объяснение Первая группа лямбд Лямбды захватывают переменную i по ссылке. К моменту, когда мы их вызываем в foreach, цикл уже завершился, поэтому i == 4. Каждая лямбда вычисляет 4 * 4 → 16. Вторая группа лямбд Внутри цикла для каждого значения i создаётся новая локальная переменная j, и лямбда захватывает именно её. При первой итерации j = 0, при второй j = 1 и т. д. Поэтому j * j даёт 0, 1, 4, 9 соответственно. Такой приём (захват локальной копии переменной) позволяет избежать «одинообразного» результата и сохранить значение каждой итерации.

Иди на дата саентиста, там вакансии с ЗП от 300 000₽ Ага, только тебя завалят на первых же задачах с LeetCode. Сотни ребят каждый день сталкиваются с тем, что без подготовки и понимания алгоритмов пройти техническое собеседование — это как пытаться собрать IKEA без инструкции. В этом деле важен опыт: гляньте канал Глеба Михайлова, он прошел больше сотни технических собеседований (съел на этом всех собак 🐕🍽). — Работал в Альфе, Сбере, Ростелекоме — 5 лет являлся наставником в Яндекс.Практикуме — Знает все подводные камни тех. собеседований в ТОП компании Кто, как не он, знает, как пройти техсобесы и не сойти с ума? Если ты хочешь левел-апнуться, больше зарабатывать и от души поржать над байками о работе в Сбере и Альфе от дата саентиста, который вырос из просто аналитика — подписывайся: @mikhaylovgleb Реклама

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

#ПятничныйКвиз #ЭтоДолженЗнатьКаждый
#ПятничныйКвиз #ЭтоДолженЗнатьКаждый