uz
Feedback
C# (C Sharp) programming

C# (C Sharp) programming

Kanalga Telegram’da o‘tish

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

Ko'proq ko'rsatish

📈 Telegram kanali C# (C Sharp) programming analitikasi

C# (C Sharp) programming (@csharp_ci) Rus til segmentidagi kanali faol ishtirokchi. Hozirda hamjamiyat 18 307 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 7 338-o'rinni va Rossiya mintaqasida 36 903-o'rinni egallagan.

📊 Auditoriya ko‘rsatkichlari va dinamika

невідомо sanasidan buyon loyiha tez o‘sib, 18 307 obunachiga ega bo‘ldi.

12 Iyun, 2026 dagi oxirgi ma’lumotlarga ko‘ra kanal barqaror faollikka ega. Oxirgi 30 kunda obunachilar soni -16 ga, so‘nggi 24 soatda esa 5 ga o‘zgardi va umumiy qamrov yuqori darajada qolmoqda.

  • Tasdiqlash holati: Tasdiqlanmagan
  • Jalb etish (ER): Auditoriya o‘rtacha 18.53% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining 7.49% ini tashkil etuvchi reaksiyalarni to‘playdi.
  • Post qamrovi: Har bir post o‘rtacha 3 393 marta ko‘riladi; birinchi sutkada odatda 1 371 ta ko‘rish yig‘iladi.
  • Reaksiyalar va o‘zaro ta’sir: Auditoriya faol: har bir postga o‘rtacha 0 ta reaksiya keladi.
  • Tematik yo‘nalishlar: Kontent .net, api, логика, архитектура, string kabi asosiy mavzularga jamlangan.

📝 Tavsif va kontent siyosati

Muallif resursni shaxsiy fikrni ifoda etish maydoni sifatida ta’riflaydi:
По всем вопросам- @notxxx1 Реестр РКН: https://clck.ru/3Fk3kb #VRHSZ

Yuqori yangilanish chastotasi (oxirgi ma’lumot 13 Iyun, 2026 da olingan) sababli kanal doimo dolzarb va katta qamrovli bo‘lib qoladi. Analitika auditoriya kontent bilan faol hamkorlik qilishini, uni Texnologiyalar & Aralashmalar toifasidagi muhim ta’sir nuqtasiga aylantirishini ko‘rsatadi.

18 307
Obunachilar
+524 soatlar
-77 kunlar
-1630 kunlar
Postlar arxiv
🚀 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

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