ar
Feedback
C# (C Sharp) programming

C# (C Sharp) programming

الذهاب إلى القناة على Telegram

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

إظهار المزيد

📈 نظرة تحليلية على قناة تيليجرام 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 أيام
أرشيف المشاركات
🖥 Итак, реальный кейс: нужно записать значение каждой строки InputField в List Эти 2 варианта ниже неправильные, они не рабо
🖥 Итак, реальный кейс: нужно записать значение каждой строки InputField в List<string> Эти 2 варианта ниже неправильные, они не работают: — List = (InputField.text).ToListList = InputField.text Так как InputField.text это тип string , я не могу преобразовать его в List<string>. Что в итоге делать? ⏩Всё довольно просто, можно записать строки InputField в List<string> вот так:
string text = InputField.text;
string[] lines = text.Split(Environment.NewLine);
⏩Или, если C# так не поддерживает в Unity первый вариант, то тогда вот так:
string[] lines = text.Split(Environment.NewLine.ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
⏩Вообще, если хочется получить список из массива, то:
List<string> list = lines.ToList();
Но если нет необходимости список модифицировать, лучше оставить массив. @csharp_ci

❓Чем перемещение отличается от копирования в C++? Узнайте на бесплатном практическом уроке от OTUS, где вы вместе с опытным э
❓Чем перемещение отличается от копирования в C++? Узнайте на бесплатном практическом уроке от OTUS, где вы вместе с опытным экспертом разберете: - синтаксис и подводные камни move-семантики; - отличие копирования от перемещения; - когда компилятор может сам, а когда ему нужно подсказать; - как отличить rvalue от lvalue; - как избегать лишнего копирования объектов. 👉 Зарегистрируйтесь прямо сейчас: https://otus.pw/mVqm/?erid=LjN8K6SUF ⏰ Занятие пройдёт 21 марта в 20:00 мск и будет приурочено к старту курса «Специализация C++ Developer». Доступна рассрочка на обучение! Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.

🖥 Найди ошибку в этом коде C# и реши задание правильно Чисто академическое задание но почему бы и нет 🙃 Вот неправильное ре
+1
🖥 Найди ошибку в этом коде C# и реши задание правильно Чисто академическое задание но почему бы и нет 🙃 Вот неправильное решение, подумай, какие в нём ошибки и напиши по красоте. ⏩Готово? Получилось? Можешь смотреть решение @csharp_ci

🖥 О использовании структур размером больше 16 байт По умолчанию, при передаче в метод/возврате из метода, экземпляры значимы
+4
🖥 О использовании структур размером больше 16 байт По умолчанию, при передаче в метод/возврате из метода, экземпляры значимых типов копируются, тогда как экземпляры ссылочных типов передаются по ссылке. В 2008 была выпущена книга «Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries». В ней рекомендовалось не использовать структуры больше 16 байт, поскольку, очевидно, структуры большего размера копируются медленнее. Прошло уже 16 лет, но в сообществе C# разработчиков до сих пор популярно мнение, что производительность структур размером больше 16 байт хуже. Даже Google на запрос «recommended structure size c#» говорит, что это не более 16 байт. Код бенчмарка очень прост. Он содержит структуры и классы размером от 4 до 160 байт, с шагом 4 байта. Для каждой структуры и класса есть соответствующий метод, который из параметра типа int cоздаёт соответствующий экземпляр и возвращает его. И, самое главное, есть непосредственно бенчмарк методы (картинка), каждый из которых создаёт список структур или классов. Размер списка – 1000 элементов. В общем, после проведения тестов можно убедиться, что использование структур размером больше 16 байт не ухудшает производительность. Сейчас этой границей является размер 64 байта. А ты знал про это? @csharp_ci

🖥 Немного о новых фичах C# 12 ▶️В C# 12 упрощен способ создания массивов и коллекций с помощью выражения коллекций (collecti
🖥 Немного о новых фичах C# 12 ▶️В C# 12 упрощен способ создания массивов и коллекций с помощью выражения коллекций (collection expression), которые представляют унифицированный подход к созданию коллекций. Так, если раньше создание массивов выглядело так:
int[] nums1 = { 1, 2, 3, 4 };
int[] nums2 = new int[] { };   // пустой массив
Теперь можно писать так:
int[] nums1 = [ 1, 2, 3, 4 ];
int[] nums2 = [];   // пустой массив
Аналогичным образом можно использовать выражения коллекций для создания других типов коллекций:
List<int> list1 = [1, 2, 3, 4];
List<int> list2 = []; //  пустой список
Span<int> span1 = [1, 2, 3, 4];
▶️Первичные конструкторы (Primary constructors) позволяют добавлять параметры к определению класса/структуры и использовать эти параметры внутри класса/структуры:
var tom = new Person("Tom", 38);
Console.WriteLine(tom);
 
public class Person(string name, int age)
{
    public Person(string name) : this(name, 18) { }
    public string Name => name;
    public int Age => age;
 
    public override string ToString() => $"name: {name}, age: {age}";
}
Здесь для класса Person определен первичный конструктор с двумя параметрами - name и age. Эти параметры применяются для инициализации свойств Name и Age и используются в методе ToString(). За кадром для каждого параметра первичного конструктора в классе создается приватное поле, которое хранит значение параметра. Благодаря этому они могут использоваться в теле класса. Кроме первичных конструкторов класс может определять дополнительные конструкторы, как примере выше. Но эти дополнительные конструкторы должны вызывать первичный конструктор:
public Person(string name) : this(name, 18) { }
Разумеется, это не все фичи C# 12, вот подробнее: 📎 Youtube 📎 Статья в тему @csharp_ci

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

💎Свежайший 8-часовой ролик-курс по C# от freeCodeCamp.org Здесь разбираются самые важные понятия, очень много практики — на
+1
💎Свежайший 8-часовой ролик-курс по C# от freeCodeCamp.org Здесь разбираются самые важные понятия, очень много практики — на протяжении ролика постоянно реализуются мини-проекты А вот темы, которые затрагиваются в ролике: Обзор языка С# 🔘Структура программы на С# 🔘Основные операции ввода/вывода 🔘Рекомендации по оформлению кода Использование структурных переменных 🔘Общая система типов (Common Type System) 🔘Использование встроенных типов данных 🔘Пользовательские типы данных 🔘Преобразование типов Операторы и исключения 🔘Операторы в С# 🔘Обработка исключений Методы и параметры 🔘Использование методов 🔘Использование параметров 🔘Перегрузка методов Массивы и коллекции 🔘Массивы 🔘Списки – List<T> 🔘Двухсвязные списки – LinkedList<T> 🔘Словари – Dictionary<TKey, TValue> Основы ООП 🔘Классы и объекты 🔘Инкапсуляция данных 🔘Наследование и полиморфизм Использование ссылочных данных 🔘Reflection (рефлексия) 🔘Пространства имен 🔘Приведение типов данных Создание и удаление объектов 🔘Использование конструкторов 🔘Уничтожение объектов Наследование в C# 🔘Использование интерфейсов 🔘Использование абстрактных классов Агрегации, пространства имён, сборки и модули 🔘Использование внутренних (internal) классов, методов и данных 🔘Использование агрегаций 🔘Фабрики классов 🔘Пространства имен 🔘Модули и сборки Операции, делегаты, события 🔘Операции 🔘Создание и использование делегатов 🔘События Свойства и индексаторы 🔘Свойства 🔘Индексаторы Посмотрите хотя бы по диагонали — прокачаете свой C# 💎 Learn C# – Full Course with Mini-Projects @csharp_ci

🖥 Полезные фишки, связанные с символом @ Специальный символ @ является "буквальным" идентификатором, короче, показывает, что
🖥 Полезные фишки, связанные с символом @ Специальный символ @ является "буквальным" идентификатором, короче, показывает, что нечто нужно интерпретировать буквально. У @ масса сфер применения, его можно использовать, чтобы: ▶️указать, что строковый литерал следует интерпретировать буквально. Символ @ в этом случае определяет буквальный строковый литерал. Простые escape-последовательности (например, "\\" для обратной косой черты), шестнадцатеричные escape-последовательности (например, "\x0041" для прописной буквы A) и escape-последовательности Юникода (например, "\u0041" для прописной буквы A) интерпретируются буквально. Только escape-последовательность кавычки ("") не интерпретируется буквально. Кроме того, в случае с интерполированными последовательностями строковых фигурных фигурных скобок ({{ и }}) не интерпретируются буквально; они создают символы с одной фигурной скобкой.
string filename1 = @"c:\documents\files\u0066.txt";
string filename2 = "c:\\documents\\files\\u0066.txt";

Console.WriteLine(filename1);
Console.WriteLine(filename2);

//     c:\documents\files\u0066.txt
//     c:\documents\files\u0066.txt
string s1 = "He said, \"This is the last \u0063hance\x0021\"";
string s2 = @"He said, ""This is the last \u0063hance\x0021""";

Console.WriteLine(s1);
Console.WriteLine(s2);

//     He said, "This is the last chance!"
//     He said, "This is the last \u0063hance\x0021"
▶️@ можно использовать в качестве идентификаторов. Символ @ предшествует элементу кода, который компилятор должен интерпретировать как идентификатор, а не ключевое слово C#:
string[] @for = { "John", "James", "Joan", "Jamie" };
for (int ctr = 0; ctr < @for.Length; ctr++)
{
   Console.WriteLine($"Here is your gift, {@for[ctr]}!");
}

//     Here is your gift, John!
//     Here is your gift, James!
//     Here is your gift, Joan!
//     Here is your gift, Jamie!
▶️ну и напоследок, @ используется, чтобы позволить компилятору различать атрибуты в случае конфликта имен. @csharp_ci

Вам когда-нибудь требовалось реализовать полнофункциональный текстовый редактор в вашем приложении C#? Просто прочтите эту ин
Вам когда-нибудь требовалось реализовать полнофункциональный текстовый редактор в вашем приложении C#? Просто прочтите эту интересную статью по ссылке, где автор представляет текстовый редактор, основанный на классе RichtextBox. Исходники находятся на сервере Codeproject, мне понадобилось аж три попытки, чтобы их скачать 😲 Надеюсь, скоро автор перенесет этот полезный проект на GitHub, а пока вот ссылка 🔗Статья и проект @csharp_ci

🖥 Отличный сборник заданий и упражнений по C#, поможет освежить самые важные понятия Эти задачи (с решениями) позволят освои
+4
🖥 Отличный сборник заданий и упражнений по C#, поможет освежить самые важные понятия Эти задачи (с решениями) позволят освоить операторы и базовые конструкции языка C#, потренировать такие навыки программирования, как ввод/вывод данных, целочисленную арифметику, логику и все операторы циклов, ну и не только — есть несколько довольно сложных заданий 📁 PDF @csharp_ci

⚡Онлайн-Хакатон "Городские Легенды" от Группы компаний Росохрана и ООО «Эпсилон»! 💡Кейсы хакатона: 1. Разработка интерактивн
⚡Онлайн-Хакатон "Городские Легенды" от Группы компаний Росохрана и ООО «Эпсилон»! 💡Кейсы хакатона: 1. Разработка интерактивного голосового помощника с использованием анимированного аватара. 2. Интеграция интерактивного аватара в городскую экосистему цифровых сервисов. 👨‍💻Для кого хакатон? - C++/C#-разработчиков; - Unity-разработчиков; - 3D-Моделлеров; - UX/UI-дизайнеров; - AI-Специалистов; - Команды из 5 человек; - Готовых внедрить любимых персонажей в городскую среду и побороться за главный приз! 🏆Общий призовой фонд - 700 000 рублей! 📅Дата проведения: 11-18 Марта 📍Формат: Онлайн Подробная информация и регистрация: https://tglink.io/6c8079854982?erid=LjN8KVcPo

Что произойдет если попытаться запустить этот код?
Anonymous voting

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

🫵 Соберите свой первый проект на С++ и добавьте его в портфолио 👉 На бесплатном практическом уроке от OTUS и Карины Дорожки
🫵 Соберите свой первый проект на С++ и добавьте его в портфолио 👉 На бесплатном практическом уроке от OTUS и Карины Дорожкиной — ведущего разработчика в Kaspersky.  На вебинаре:- разберем понятие единицы трансляции;- проследим за ошибками компиляции и линковки, разберёмся в их причинах;- создадим статическую библиотеку и подключим её при помощи CMake;- обсудим разницу между статической библиотекой и динамической.  ⏰ Занятие пройдёт 5 марта в 20:00 мск и будет приурочено к старту курса «Специализация C++ Developer». Доступна рассрочка на обучение! 👉 Зарегистрируйтесь прямо сейчас, чтобы занять место: https://otus.pw/JPb4/?erid=LjN8KEppm Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.

🖥 Новый выпусе- Microsoft .Data.SqlClient 5.2 - с .NET 8, поддержкой пакетной обработки Sql и идентификации рабочей нагрузки
🖥 Новый выпусе- Microsoft .Data.SqlClient 5.2 - с .NET 8, поддержкой пакетной обработки Sql и идентификации рабочей нагрузки + многое другое - смотрите примечания к выпуску: 📌 Релиз #dotnet #sqlserver @csharp_ci

🖥 Интересный вопрос Что выведет данная программа? А скомпилируется ли она вообще? var str = new TheBestStructEver(5); Consol
🖥 Интересный вопрос Что выведет данная программа? А скомпилируется ли она вообще?
var str = new TheBestStructEver(5);

Console.WriteLine(str.A);

public struct TheBestStructEver
{
    public int A;

    public TheBestStructEver(int a)
    {
        A = a;
        this = new TheBestStructEver();
    }
}
❯ Ответ: да, скомпилируется, причем без всяких предупреждений, и выведет 0. Давайте разберем почему это так. Обратимся к IL-коду нашей структуры, а конкретнее к 12-ой строчке. Вот как она выглядит в IL-коде:
IL_0013: ldarg.0
IL_0014: initobj      TheBestStructEver
Итак, первая строчка загружает в стек нулевой аргумент, переданный в метод (конструктор - тоже метод). Аргумент под нулевым индексом - это указатель на объект, в котором мы работаем, то есть this. initobj инициализирует каждое поле структуры нулями или null по адресу, которое лежит у нас первым в стеке (а у нас там лежит указатель на this). Дополнительно мы еще передаем токен, который указывает тип структуры. Таким образом получается, что у нас вся структура "перезатёрлась нулями" и значение поля A равно нулю. @csharp_ci

🖥 Прямо-таки сеньорская версия FizzBuzz — функциональный код с массивом делегатов преобразований числа в Fizz &amp; Buzz. pu
🖥 Прямо-таки сеньорская версия FizzBuzz — функциональный код с массивом делегатов преобразований числа в Fizz & Buzz.
public class FizzBuzz
{
    public static void Main(string[] args)
    {
        Console.WriteLine(FizzBuzzProgram(350));
    }
    public static string FizzBuzzProgram(int n) =>
        String.Join("\r\n", 
            Enumerable.Range(1, n).Select(FizzBuzzPipeline));

    static readonly Func<int, string?>[] handlers = [(n) => n % 3 == 0 ? "Три" : null, (n) => n % 5 == 0 ? "Пять" : null];
    
    public static string FizzBuzzPipeline(int i) => Counter(i, String.Join("", handlers.Select(f => f(i))));

    public static string FizzBuzzPipelinePar(int i)
    {
        var results = handlers.AsParallel().Select(handler => handler(i)).Where(r => r != null);
        return results.Any() ? string.Concat(results) : i.ToString();
    }
}
Этот массив расширяемый - пишите хоть 100 проверок, множество других решений на такое не способно. Можно любое вычисление вычислять. А из-за независимости мы можем запускать их параллельно (если бы вычисление хендлера занимало большое время). Красота! Хотите попроще ценой потери части универсальности?
static string FizzBuzzPipelineWOHandlers(int n)
{
    string result = $"{(n % 3 == 0 ? "Fizz" : "")}{(n % 5 == 0 ? "Buzz" : "")}{(n % 7 == 0 ? "Qux" : "")}";
    return String.IsNullOrEmpty(result) ? n.ToString() : result;
}
Вдохновлено идеями Скотта Влашина, в частности, этим роликом @csharp_ci

5️⃣простых правил, которые не стоит забывать, чтобы код C# был чище и производительнее ➖Возврат null из неасинхронного метода
5️⃣простых правил, которые не стоит забывать, чтобы код C# был чище и производительнее ➖Возврат null из неасинхронного метода Task/Task<T> приведет к возникновению NullReferenceException. Этой проблемы можно избежать, вернув вместо этого Task.FromResult<T>(null)
// неправильно
public Task<object> GetFooAsync()
{
    return null; // Noncompliant
}
// правильно так
public Task<object> GetFooAsync()
{
    return Task.FromResult<object>(null);
}
➖Объединять строки в цикле лучше не через +. Лучше использовать StringBuilder как более эффективный вариант.
// можно быстрее
string str = "";
for (int i = 0; i < arrayOfStrings.Length ; ++i)
{
  str = str + arrayOfStrings[i];
}
// это быстрее
StringBuilder bld = new StringBuilder();
for (int i = 0; i < arrayOfStrings.Length; ++i)
{
  bld.Append(arrayOfStrings[i]);
}
string str = bld.ToString();
➖Для поиска подстрок вместо str.Substring(startIndex).IndexOf(char1) лучше использовать один из методов: IndexOf IndexOfAny LastIndexOf LastIndexOfAny
// так не стоит 
str.Substring(StartIndex).IndexOf(char1); // Noncompliant; a new string is going to be created by "Substring"
// более эффективный вариант 
str.IndexOf(char1, startIndex);
➖Вместо null во многих случаях лучше возвращать пустые массивы/коллекции, это делает код понятнее
// плохая идея
public Result[] GetResults()
{
    return null; // Noncompliant
}

public IEnumerable<Result> GetResults()
{
    return null; // Noncompliant
}
// так намного лучше
public Result[] GetResults()
{
    return new Result[0];
}

public IEnumerable<Result> GetResults()
{
    return Enumerable.Empty<Result>();
}
➖Если мы делим на объект типа int, то результатом всегда будет int; можно конечно привести этот результат к типу вещественного числа, но из-за проблем с плавающей запятой результат может быть не тем. В общем, лучше привести делимое к (decimal):
decimal dec = 3/2; // 1
decimal dec = (decimal)3/2; // 1.5
Не стоит забывать эти простые рекомендации, тогда код будет чище и понятее @csharp_ci

👩‍💻 TDD в разработке на С# — что, для чего, полезно ли? Расскажет Антон Герасименко — .net developer + lead. Встречаемся на
👩‍💻 TDD в разработке на С# — что, для чего, полезно ли? Расскажет Антон Герасименко — .net developer + lead. Встречаемся на бесплатном практическом уроке от OTUS, где вы вместе с опытным экспертом разберете: ✅ как короткие циклы разработки, опирающиеся на TDD (разработка через тестирование) влияют на качество продукта; ✅ как его внедрить, когда это нужно и что делать потом.  Занятие пройдёт 29 февраля в 20:00 мск и будет приурочено к старту курса «C# Developer. Professional». Доступна рассрочка на обучение! 👉 Пройдите короткий тест прямо сейчас, чтобы занять место на открытом уроке и получить запись: пройти тест  Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.