ru
Feedback
C# (C Sharp) programming

C# (C Sharp) programming

Открыть в Telegram

📈 Аналитический обзор Telegram-канала C# (C Sharp) programming

Канал C# (C Sharp) programming (@csharp_ci) языкового сегмента Русский является активным участником. Сейчас сообщество объединяет 18 307 подписчиков, занимая 7 339 место в категории Технологии и приложения и 36 883 место в регионе Россия.

📊 Показатели аудитории и динамика

С момента создания невідомо проект демонстрирует стремительный рост, собрав аудиторию из 18 307 подписчиков.

Согласно последним данным от 14 июня, 2026, канал показывает стабильную активность. За последние 30 дней изменение числа участников составило -10, а за последние 24 часа — -7, при этом общий охват остаётся высоким.

  • Статус верификации: Не верифицирован
  • Уровень вовлечённости (ER): Средний показатель вовлечённости аудитории составляет 18.97%. В первые 24 часа после публикации контент обычно набирает 7.27% реакций от общего числа подписчиков.
  • Охват публикаций: В среднем каждый пост получает 3 472 просмотров. В течение первых суток публикация набирает 1 331 просмотров.
  • Реакции и взаимодействия: Аудитория активно поддерживает контент: среднее количество реакций на один пост — 0.
  • Тематические интересы: Контент сосредоточен на ключевых темах, таких как .net, api, логика, архитектура, string.

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

Автор описывает ресурс как площадку для выражения субъективного мнения:
По всем вопросам- @notxxx1 Реестр РКН: https://clck.ru/3Fk3kb #VRHSZ

Благодаря высокой частоте обновлений (последние данные получены 15 июня, 2026) канал поддерживает актуальность и высокий уровень охвата публикаций. Аналитика показывает, что аудитория активно взаимодействует с контентом, что делает его важной точкой влияния в категории Технологии и приложения.

18 307
Подписчики
-724 часа
-27 дней
-1030 день
Архив постов
🖥 Чем out отличается от ref? ▶️Функция с параметром с ключевым словом out даёт такой же результат, как и с ref. Такой код: p
🖥 Чем out отличается от ref? ▶️Функция с параметром с ключевым словом out даёт такой же результат, как и с ref. Такой код:
private void func(out string value)
{
    value = "Hello World!";
}
Даёт такой же эффект, как и:
private void func(ref string value)
{
    value = "Hello World!";
}
В чём же разница между out и ref? ▶️Разница в том, что out — это выходной параметр, а ref — входно-выходной. Для ref-параметра вы должны передать его инициализированным, и можете пользоваться его исходным значением. А для out-параметра вы не обязаны инициализировать его перед вызовом функции, не можете использовать его значение в функции до присваивания, и обязаны инициализировать его в функции. (Таким образом, ref-параметр немного напоминает инициализированную локальную переменную, а out-параметр — неинициализированную.) Иллюстрация:
private void func1(out string value)
{
    Console.WriteLine(value); // нельзя, value не инициализировано
    if (false)
        return;               // нельзя, забыли установить значение value
    value = "Hello World!";
}

string s1;
func1(out s1);
private void func2(ref string value)
{
    Console.WriteLine(value); // можно
    if (false)
        return;               // не проблема, у value остаётся старое значение
    value = "Hello World!";
}

string s2;
func2(ref s2); // нельзя, функция имеет право использовать значение,
               // значит, оно должно быть инициализировано сначала
Таким образом, out-параметр — это как бы дополнительное возвращаемое значение функции. А ref-параметр — просто параметр, изменения которого видны снаружи функции. @csharp_ci

🖥 Пишем на C# программу для поиска файлов, используя ProgressBar и BackgroundWorker Если вы хотите глубже разобраться, как р
🖥 Пишем на C# программу для поиска файлов, используя ProgressBar и BackgroundWorker Если вы хотите глубже разобраться, как работать с элементами ProgressBar и BackgroundWorker в C#, с элементом FolderBrowserDialog, а также с событиями DoWork, ProgressChanged, RunWorkerCompleted, то большая часть этой статьи может принести вам много нового опыта. Уверен, будет полезно) Будущее приложение по поиску файлов будет выглядеть как на изображении 📎 Пошаговая реализация программы @csharp_ci

🖥 Что лучше, возвращать null, или пустую коллекцию? ▶️Если возвращаемый тип — коллекция, что лучше: возвращать null или пуст
🖥 Что лучше, возвращать null, или пустую коллекцию? ▶️Если возвращаемый тип — коллекция, что лучше: возвращать null или пустую коллекцию? Есть ли общепринятая практика? ▶️Вопрос здесь в семантике. На запрос «дайте мне список всех пользователей» пустая коллекция имеет очевидный смысл: «окей, вот вам список всех пользователей, их ровно 0 штук». С другой стороны, возвращённый null может означать что угодно: «я не знаю, сколько пользователей», «количество пользователей ещё не подсчитано», «текущая база данных вообще не имеет понятия пользователь», что угодно. То есть смысл пустой коллекции всегда ясен, смысл null не определён. ▶️Ещё одна причина возвращать пустые коллекции, а не null — так вы избавите пользователя от необходимости писать утомительный код проверок на null и, соответственно, избавите его от большого количества NullReferenceException, если он таковой код написать забыл. Хорошим примером могут быть случаи, когда коллекции задействованы в цепочках методов вида
var res = FirstMethod().SecondMethod().ThirdMethod();
и в случае, если коллекция равна null, вся цепочка может быть обрушена исключением, тогда как проверки на null превратят этот лаконичный и довольно элегантный синтаксис в кашу из вложенных if-ов. Для коллекций это можно считать общепринятой практикой. Кстати, в LINQ именно так и делается. Например, следующий код вполне нормально работает без выбрасывания исключений, хотя очевидно, что ни один из элементов коллекции не удовлетворяет условию лямбды в Where:
var res2 = new[] { 1, 2, 3 }.Where(x => x > 10).Select(x => x);
@csharp_ci

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

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

🖥 Путь C# Web программиста Держите очень полезную roadmap от Михаила Флёнова, автора «Библия C#» Это подборка видео и статей
+2
🖥 Путь C# Web программиста Держите очень полезную roadmap от Михаила Флёнова, автора «Библия C#» Это подборка видео и статей, которые помогут на пути C# Web разработчика Пользуйтесь) 📎 Roadmap @csharp_ci

🖥 Event и delegate: в чем отличие? Начнём с того, что event и delegate — это 2 абсолютно разных вещи. Разница между полем-де
🖥 Event и delegate: в чем отличие? Начнём с того, что event и delegate — это 2 абсолютно разных вещи. Разница между полем-делегатом и event'ом примерно такая же, как между полем и свойством: event иногда выглядит как делегатное поле. Давайте разберёмся в этом. ⏩delegate — это класс, содержащий в себе «шаблон» метода, то есть, сигнатуру метода. Переменная делегатного типа — объект типа MulticastDelegate (точнее, производного от него), который может содержать один или несколько объектов, представляющих собой методы с совместимой с «шаблоном» сигнатурой (контр- и ковариантность немного усложняет картину). То есть это как бы переменная, которая может содержать функции. Для таких переменных определена операция +, которая комбинирует слагаемые-функции в одну новую функцию, и симметричная операция -. Эти операции автоматически порождают производные операции += и -=. ⏩event же — это просто пара методов в классе, обозначаемых как add и remove, и имеющих произвольную семантику, выбранную программистом. (Аналог — геттер и сеттер свойства.) В имплементации по умолчанию для event'а заводится скрытое поле делегатного типа, а add/remove добавляют или убирают из него методы (под lock'ом). (Чтобы немного запутать картину, это скрытое поле доступно по тому же имени, что и event.) Функции add/remove, составляющие event, *вызываются* соответственно как += и -=. Никаких операций +/-, разумеется, нету. 📎 Подробнее @csharp_ci

😎Хотите освоить систему контроля версий git и улучшить свои навыки разработки на С#? 💪Приходите на бесплатный практический
😎Хотите освоить систему контроля версий git и улучшить свои навыки разработки на С#?  💪Приходите на бесплатный практический урок «Система контроля версий git» от OTUS. Спикер — опытный Fullstack-разработчик на стеке C#(.NET) и Javascript (React). 👨‍🏫На вебинаре вы изучите основные понятия и операции git, которые помогут вам эффективно управлять версиями вашего кода и начать успешную карьеру в программировании! Занятие подойдет новичкам и продолжающим разработчикам на С#. 🥉Урок пройдет 23 апреля в 20:00 мск и будет приурочен к старту большого курса «Специализация C# Developer». После вебинара вы получите специальную цену на обучение и персональную консультацию от наших менеджеров! 💯Регистрируйтесь прямо сейчас, чтобы не пропустить бесплатный урок: https://clck.ru/3A7HQh  Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.

🖥 Море полезных ресурсов по C# Здесь и сборники рецептов, и теория по сетевому программированию, и паттерны проектирования п
+1
🖥 Море полезных ресурсов по C# Здесь и сборники рецептов, и теория по сетевому программированию, и паттерны проектирования приложений, и описание принципов работы асинхронного кода Даже ссылки на обзоры IDE и инструменты для работы с C# Рекомендую) 📎 Ссылка @csharp_ci

Бесплатный курс для middle C#-разработчиков от Ozon На курсе Route 256 инженеры Ozon расскажут про самые современные технологии, а также поделятся своим опытом разработки микросервисов. Будут лекции, воркшопы, код-ревью домашних заданий и профессиональное комьюнити. Курс рассчитан на разработчиков с опытом от 3 лет, в конце Ozon предлагает офферы лучшим выпускникам. Чтобы попасть на курс, нужно пройти отборочный контест 5 мая. Узнать подробности и подать заявку

🖥 Visual Studio 17.10 получит унифицированный интерфейс Copilot, объединяющий функции Copilot и Copilot Chat ⏩Microsoft объя
🖥 Visual Studio 17.10 получит унифицированный интерфейс Copilot, объединяющий функции Copilot и Copilot Chat ⏩Microsoft объявила, что Visual Studio 17.10, выход которой запланирован на май, получит унифицированный интерфейс Copilot, объединяющий функции Copilot и Copilot Chat в одном пакете. Это должно устранить необходимость установки двух отдельных расширений и позволит «глубже интегрировать в приложение возможности искусственного интеллекта». ⏩Ознакомиться с новым унифицированным интерфейсом можно в версии Preview 3 по подписке GitHub Copilot. @csharp_ci

🖥 Avalonia UI — система для разработки мультиплатформенных приложений с помощью .NET ⏩Avalonia - это открытая, кроссплатформ
🖥 Avalonia UI — система для разработки мультиплатформенных приложений с помощью .NET ⏩Avalonia - это открытая, кроссплатформенная графическая система отображения. Она входит в .NET Foundation и является одним из самых активных проектов сообщества в области IT. Она используется для создания продвинутых и красивых интерфейсов. Avalonia поддерживает множество платформ, включая Windows, Linux, macOS, iOS, Android и WebAssembly. ⏩Созданная на современном стеке .NET, Avalonia позволяет использовать любой язык из семейства .NET (C#, F#, Visual Basic) и язык разметки XAML для определения интерфейса. Подобно WPF, Avalonia использует систему стилей на основе XAML, а ее система компоновки и привязки данных предоставляет знакомую среду для разработчиков, имеющих опыт работы с фреймворками, основанными на XAML. ⏩Ключевым отличием Avalonia от других графических систем является отсутствие привязки к графическим элементам операционной системы. Вместо этого используются собственные элементы, обеспечивающие гибкость и высокую степень единообразия поведения на разных платформах. 📎 Ответы на частые вопросы про Avalonia 📎 GitHub @csharp_ci

🖥Ускоряем Dictionary в C# при помощи структур и CollectionsMarshal Как C# разработчик, вы по-любому знаете класс Dictionary.
+2
🖥Ускоряем Dictionary в C# при помощи структур и CollectionsMarshal Как C# разработчик, вы по-любому знаете класс Dictionary. В качестве значений вы, скорее всего, использовали классы. А знаете ли вы, что в Dictionary можно использовать структуры? Не стоит бояться того, что структуры копируются при передаче в метод или возврате из него. Есть способ этого избежать, и это работает быстро. Собственно, об этом и говорится в статье, а вот некоторые выводы из неё: 🟡Структуры — недооценённые элементы C#, которые, при определённых условиях, способны ускорить ваше приложение. 🟡При использовании структур в качестве значений для Dictionary лучше воспользоваться классом CollectionsMarshal. 🟡Методы этого класса GetValueRefOrAddDefault и GetValueRefOrNullRef позволяют получать элементы словаря по ссылке. Это, в свою очередь, может положительно сказаться на производительности кода при относительно большом количестве операций поиска в словаре. 📎 Статья @csharp_ci

🔥Подборка лучших обучающих каналов для программистов. ➡️ Делитесь с коллегами и сохраняйте себе, чтобы не потерять ⚡Машинное обучение Machine Learning - запускаем лучшие ИИ модели, пишем код, погружаемся в нейросети Ml Собеседование - подготовка к собесу по мл, алгоритмам, коду Ml ru - актуальные статьи, новости, код и обучающие материалы Ml Jobs - вакансии ML ML Книги - актуальные бесплатные книги МО ML чат 🏆 Golang Golang - изучи один из самых перспективных языков на ит-рынке Golang собеседование - разбор задач и вопросов с собесов Golang вакансии -работа для Go разработчика Golang книги библиотека книг Golang задачи и тесты Golang чат Golang news - новости из мира go Golang дайджест 💥 Linux /Этичный хакинг Linux Academy - гайды, секреты и лучшие материалы по Linux Kali linux - погрузись в мир этичного хакинга и кибербезопасности linux_kal - kali чат Информационная безопасность 🚀 Data Science Анализ данных - полезные фишки, код, гайды и советы, маст-хэв датасаентиста Data Jobs - ds вакансии Аналитик данных Data Science книги - актуальные бесплатные книги Big data 🛢Базы данных Sql базы данных - научим работе с базами данных профессионально Библиотека баз данных SQL чат Вакансии Sql аналитик данных #️⃣C# С# академия - лучший канал по c# С# заметки — код, лучшие практики, заметки программиста c# С# задачи и тесты С# библиотека - актуальные бесплатные книги C# вакансии - работа 🐍 Python Python/django - самый крупный обучающий канал по Python Python Собеседование - подготовка к собеседовению python и разбор алгоритмов Pro python - статьи, новости, код и обучающие материалы Python Jobs - вакансии Python Python чат Python книги ☕ Java Java академия - java от Senior разработчика Java вакансии Java чат Java вопросы с собеседований Java книги 💻 C++ C++ академия С++ книги C++ задачи - подготовка к собеседовению мл, алгоритмам C++ вакансии ⚡️ Frontend Javascript академия - крупнейший js канал React - лучшие гайды и советы по работе с react Frontend - тутрориалы, уроки, гайды, код PHP Книги frontend Задачи frontend 🦀 Rust Rust программирование Rust чат Rust книги для программистов 📲 Мобильная разработка Android разработка Мобильный разработчик гайды и уроки 🇬🇧 Английский для программистов 🧠 Искусственный интеллект ИИ и технологии Neural - нейросети для работы и жизни Книги ИИ Artificial Intelligence 🔥 DevOPs Devops для программистов Книги Devops 🌟 Docker/Kubernets Docker Kubernets 📓 Книги Библиотеки Книг для программситов 💼 Папка с вакансиями: Папка Go разработчика: Папка Python разработчика: Папка Data Science Папка Java разработчика Папка C# Папка Frontend

🖥 10 простых и не очень однострочников на C# ⏩Удваивание всех чисел в списке Print("Multiple each item in a list by 2", Enum
🖥 10 простых и не очень однострочников на C#Удваивание всех чисел в списке
Print("Multiple each item in a list by 2", Enumerable.Range(1, 10).Select(i => i * 2));
Сумма списка чисел
Print("Sum a list of numbers", Enumerable.Range(1, 1000).Sum());
Проверка вхождения подстроки
var wordlist = new[] { "C#", "and stuff" };
var tweet = "This is an example tweet talking about C# and stuff";
Print("Verify if a word exists in string", wordlist.Any(word => tweet.IndexOf(word) > -1));
Print("Show matched words in string", wordlist.Where(word => tweet.IndexOf(word) > -1));
Чтение файла
Print("Read in a File", File.ReadAllBytes("oneliners.exe").Length);
С днём рожденья
Print("Happy Birthday", Enumerable.Range(1, 4).Select((i) => string.Format("Happy Birthday {0} ", i == 3 ? "dear NAME" : "to You")));
Фильтрация списка чисел
var passed = new List<int>();
var failed = new List<int>();

(from bucket in new[] { passed, failed } from i in new[] { 49, 58, 76, 82, 88, 90 } select new { bucket, i }).ToList().ForEach((tuple) => tuple.bucket.AddRange(Enumerable.Repeat(tuple, 1).Where((tup) => (tup.bucket == passed && tup.i > 60) || (tup.bucket == failed && tup.i <= 60)).Select((tup) => tup.i)));
Print("Filter list of numbers >60", (IEnumerable<int>)passed);
Print("Filter list of numbers <=60", (IEnumerable<int>)failed);
Получение и разбор XML от веб-сервиса
Print("Fetch and Parse an XML web service", XDocument.Load("http://search.twitter.com/search.atom?&q=scala"));
Поиск минимума и максимума в списке
Print("Find minimum in a list", Enumerable.Min(new[] { 14, 35, -7, 46, 98 }));
Print("Find maximum in a list", Enumerable.Max(new[] { 14, 35, -7, 46, 98 }));
Параллельная обработка
Print("Parallel Processing", Enumerable.Range(1, 10).AsParallel().Select((i)=>i*2).AsEnumerable());
FizzBuzz
Print("Fizzbuzz", Enumerable.Range(1, 15).Select((i)=>i + (i%3==0?"fizz":"") + (i%5==0?"buzz":"")));
@csharp_ci

Бесплатный курс для middle C#-разработчиков от Ozon На курсе Route 256 инженеры Ozon расскажут про самые современные технолог
Бесплатный курс для middle C#-разработчиков от Ozon На курсе Route 256 инженеры Ozon расскажут про самые современные технологии, а также поделятся своим опытом разработки микросервисов. Будут лекции, воркшопы, код-ревью домашних заданий и профессиональное комьюнити. Курс рассчитан на разработчиков с опытом от 3 лет, в конце Ozon предлагает офферы лучшим выпускникам. Чтобы попасть на курс, нужно пройти отборочный контест 5 мая. Узнать подробности и подать заявку

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

#ПятничныйКвиз #ПрощеНекуда
#ПятничныйКвиз #ПрощеНекуда

🖥 Необходимо определить делегат и реализовать метод ⏩Итак, вот задание: определить делегат bool CounterHashSetDelegate(int a
🖥 Необходимо определить делегат и реализовать метод ⏩Итак, вот задание: определить делегат bool CounterHashSetDelegate(int a) и реализовать метод int Function12(HashSet<int> intSet, CounterHashSetDelegate filter), который возвращает количество элементов из intSet, которые удовлетворяют условию filter.
public static  class 
{
public delegate bool CounterHashSetDelegate(int a);
public static int Function12(HashSet<int> intSet, CounterHashSetDelegate filter)
{
 
    int count = 0;
    foreach (int i in intSet)
    {
        if(filter(i))
                    count++;
}
return count;
}
}
⏩Давайте сразу к сути, решение может выглядеть так:
public delegate bool CounterHashSetDelegate(int a);

class Program
{
   static void Main(string[] args)
   {
       CounterHashSetDelegate d = IsEvenNum;

       Console.WriteLine($"Количество четных элементов:{Function12(new HashSet<int> { 1, 2, 3, 4, 5 }, d)}");

       d = IsGreaterThen;

       Console.WriteLine($"Количество  элементов > 2:{Function12(new HashSet<int> { 1, 2, 3, 4, 5 }, d)}");

       Console.ReadKey();
   }

   public static bool IsEvenNum(int a)
   {
       return a % 2 == 0;// четное ли число например
   }

   public static bool IsGreaterThen(int a)
   {
       return a > 2;//больше  ли  например
   }


   public static int Function12(HashSet<int> intSet, CounterHashSetDelegate filter)
   {

       int count = 0;
       foreach (int i in intSet)
       {
           if (filter(i))
           {
               count++;
           }
       }
       return count;
   }

}
Вот и все дела @csharp_ci

🖥 Блеск и нищета паттерна «Спецификация» в С#. Оцениваем планы запросов ⏩Держите годный контент. О чём статья? О паттерне «С
🖥 Блеск и нищета паттерна «Спецификация» в С#. Оцениваем планы запросов ⏩Держите годный контент. О чём статья? О паттерне «Спецификация», который позволяет улучшить структуру приложения, и, следовательно, увеличить гибкость, уменьшив при этом объем кода, а значит - сократить количество ошибок, но это не точно. ⏩Из статьи напрашивается такой очевидный вывод: паттерн «Спецификация» выгоднее всего использовать там, где модели состоят из нескольких десятков или сотен полей и к ним нужно применять сложные критерии фильтрации данных. 📎 Статья @csharp_ci