es
Feedback
C# (C Sharp) programming

C# (C Sharp) programming

Ir al canal en Telegram

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

Mostrar más

📈 Análisis del canal de Telegram C# (C Sharp) programming

El canal C# (C Sharp) programming (@csharp_ci) en el segmento lingüístico de Ruso es un actor destacado. Actualmente la comunidad reúne a 18 307 suscriptores, ocupando la posición 7 339 en la categoría Tecnologías y Aplicaciones y el puesto 36 883 en la región Rusia.

📊 Métricas de audiencia y dinámica

Desde su creación el невідомо, el proyecto ha mostrado un crecimiento acelerado, reuniendo a 18 307 suscriptores.

Según los últimos datos del 14 junio, 2026, el canal mantiene una actividad estable. En los últimos 30 días la variación de miembros fue de -10, y en las últimas 24 horas de -7, conservando un alto alcance.

  • Estado de verificación: No verificado
  • Tasa de interacción (ER): El promedio de interacción de la audiencia es 18.97%. Durante las primeras 24 horas tras publicar, el contenido suele obtener 7.27% de reacciones respecto al total de suscriptores.
  • Alcance de las publicaciones: Cada publicación recibe en promedio 3 472 visualizaciones. En el primer día suele acumular 1 331 visualizaciones.
  • Reacciones e interacción: La audiencia responde de forma activa: el promedio de reacciones por publicación es 0.
  • Intereses temáticos: El contenido se centra en temas clave como .net, api, логика, архитектура, string.

📝 Descripción y política de contenido

El autor describe el recurso como un espacio para expresar opiniones subjetivas:
По всем вопросам- @notxxx1 Реестр РКН: https://clck.ru/3Fk3kb #VRHSZ

Gracias a la alta frecuencia de actualizaciones (últimos datos recibidos el 15 junio, 2026), el canal mantiene la vigencia y un amplio alcance. La analítica demuestra que la audiencia interactúa activamente con el contenido, lo que lo convierte en un punto de referencia dentro de la categoría Tecnologías y Aplicaciones.

18 307
Suscriptores
-724 horas
-27 días
-1030 días
Archivo de publicaciones
🖥 Итак, реальный кейс: нужно записать значение каждой строки 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.