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 335,并在 俄罗斯 地区排名第 36 870 位。
📊 受众指标与增长动态
自 невідомо 创建以来,项目保持高速增长,吸引了 18 307 名订阅者。
根据 15 六月, 2026 的最新数据,频道保持稳定运转。过去 30 天订阅人数变化为 -14,过去 24 小时变化为 0,整体触达仍然可观。
- 认证状态: 未认证
- 互动率 (ER): 平均受众互动率为 19.46%。内容发布后 24 小时内通常能获得 7.27% 的反应,占订阅者总量。
- 帖子覆盖: 每篇帖子平均可获得 3 563 次浏览,首日通常累积 1 331 次浏览。
- 互动与反馈: 受众积极参与,单帖平均反应数为 0。
- 主题关注点: 内容集中在 .net, api, логика, архитектура, string 等核心主题上。
📝 描述与内容策略
作者将该频道定位为表达主观观点的平台:
“По всем вопросам- @notxxx1
Реестр РКН: https://clck.ru/3Fk3kb
#VRHSZ”
凭借高频更新(最新数据采集于 16 六月, 2026),频道始终保持新鲜度与高覆盖。分析显示受众积极互动,使其成为 技术与应用 类别中的关键影响点。
18 307
订阅者
无数据24 小时
+87 天
-1430 天
帖子存档
18 304
Задача. Слияние двух бинарных деревьев
Сложность: Лёгкая
Условие задачи: Даны два бинарных дерева, необходимо осуществить их наложение друг на друга и вывод результатов в новом дереве.
Примечание: Наложение представляет из себя суммирование соответствующих значений из узлов двух деревьев.
Пример:
Ввод:
root1 = [1,3,2,5], root2 = [2,1,3,null,4,null,7]
Вывод:[3,4,5,5,4,null,7]
Ввод: root1 = [1], root2 = [1,2]
Вывод: [2,2]
* Определение для узла двоичного дерева.
* public class TreeNode {
* public int val;
* public TreeNode left;
* public TreeNode right;
* public TreeNode(int val=0, TreeNode left=null, TreeNode right=null) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
public class Solution {
public TreeNode MergeTrees(TreeNode root1, TreeNode root2)
{
if (root1 == null & root2 == null) return null;
if (root1 == null) return root2;
if (root2 == null) return root1;
var left = MergeTrees(root1.left, root2.left);
var right = MergeTrees(root1.right, root2.right);
if (root1.left != left) root1.left = left;
if (root1.right != right) root1.right = right;
root1.val += root2.val;
return root1;
}
}
Пишите свое мнение в комментариях👇
@csharp_ci18 304
👩💻Как разрабатывать веб-сервисы на C# быстрее?
Узнайте на бесплатном вебинаре «ASP NET Core - подготовка и запуск простого веб-сервиса»: регистрация
На уроке мы:
— Создадим базовый web-api для сервиса;
— Разработаем контроллер и настроим маршрутизацию точек доступа;
— Подключим источник данных;
— Познакомимся с инструментами ручного тестирования сервиса и моделями развертывания приложения.
Спикером выступит Антон Герасименко, тимлид и .NET Developer.
Вебинар точно будет полезен C#-разработчикам с опытом от 2 лет, которые хотят углубиться в создание web-приложений.
👉Для регистрации пройдите вступительный тест: пройти тест на сайте
18 304
⚜️ArchUnitNET
ArchUnitNET - это бесплатная, простая библиотека для проверки архитектуры кода на C#. ArchUnitNET это форк https://www.archunit.org/ для Java.
PS> Install-Package ArchUnitNET
▪ Github
▪Документация
@csharp_ci18 304
🖥 Lists & enumerables
Продолжаем говорить о Linq. Библиотека Linq очень полезна для написания быстрых, однострочных функций, приведем несколько примеров с кодом:
▪Суммирование всех чисел в диапазоне:
using System;
using System.Linq;
public class Program {
public static void Main() {
Console.WriteLine(Enumerable.Range(1, 100).Sum());
}
}
▪Применение функции ко всем числам в списке:
using System;
using System.Linq;
public class Program {
private static int Square(int n) => n * n;
public static void Main() {
int[] arr = { 1, 2, 3, 4 };
// direct anonymous function
int[] arr2 = arr.Select(n => n * n).ToArray();
// using another method
int[] arr3 = arr.Select(Square).ToArray();
foreach (int n in arr2)
Console.WriteLine(n); // output: 1, 4, 9, 16
foreach (int n in arr3)
Console.WriteLine(n); // output: 1, 4, 9, 16
}
}
▪Фильтрация списка номеров:
using System;
using System.Linq;
public class Program {
private static bool IsValid(int n) => n % 2 == 0 && n > 4;
public static void Main() {
int[] arr = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
// direct anonymous function
int[] arr2 = arr.Where(n => n % 2 == 0 && n > 4).ToArray();
// using another method
int[] arr3 = arr.Where(IsValid).ToArray();
foreach (int n in arr2)
Console.WriteLine(n); // output: 6, 8
foreach (int n in arr3)
Console.WriteLine(n); // output: 6, 8
}
}
▪Нахождение минимального/максимального значения в списке:
using System;
using System.Linq;
public class Program {
public static void Main() {
int[] arr = { 4, 7, 2, 1, 3, 6, 9, 8, 0, 5 };
Console.WriteLine(Enumerable.Min(arr)); // output: 0
Console.WriteLine(Enumerable.Max(arr)); // output: 9
}
}
@csharp_ci18 304
System Design — это одна из ключевых компетенций любого опытного разработчика. Хотите улучшить свои навыки в разработке на Golang? Приглашаем вас 🗓 3 мая в 20:00 на открытый урок «System Design» в OTUS.
На уроке спроектируем WhatsApp, а также познакомимся с типичными примерами проектирования большинства популярных мессенджеров, посмотрим на типичные ошибки, узнаем некоторые тонкости, о которых редко задумываются.
Спикером выступит 👨💻 Владимир Балун, ведущий разработчик в Ozon. Сейчас Владимир занимается разработкой высоконагруженных сервисов Observability platform.
👉 Пройдите вступительный тест, чтобы участвовать — https://otus.pw/TPK4/
Вебинар приурочен к старту онлайн-курса «Golang Developer. Professional» в OTUS. Курс доступен в рассрочку.
Реклама. Информация о рекламодателе на сайте www.otus.ru.
18 304
🖥 Задача с leetcode. Max Area of Island
Максимальная площадь острова
Сложность: Средняя
Условие задачи: Условие задачи:
Дан двумерный массив размера m x n. "1" отвечает за сушу, "0" - за океан. Необходимо опеределить максмимальную площадь острова из островов, расположенных на карте.
Островом считается территория, образованная из "1", расположенных сверху, справа, снизу и слева относительно друг друга.
Пример:
Ввод: grid = [[0,0,1,0,0,0,0,1,0,0,0,0,0],[0,0,0,0,0,0,0,1,1,1,0,0,0],[0,1,1,0,1,0,0,0,0,0,0,0,0],[0,1,0,0,1,1,0,0,1,0,1,0,0],[0,1,0,0,1,1,0,0,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,1,0,0],[0,0,0,0,0,0,0,1,1,1,0,0,0],[0,0,0,0,0,0,0,1,1,0,0,0,0]]
Вывод: 6
Ввод: grid = [[0,0,0,0,0,0,0,0]]
Вывод: 0
Решение
public class Solution {
public int MaxAreaOfIsland(int[][] grid)
{
var best = 0;
var travelled = new bool[grid.Length][];
for (var i = 0; i < grid.Length; i++)
travelled[i] = new bool[grid[i].Length];
for (var i = 0; i < grid.Length; i++)
for (var j = 0; j < grid[0].Length; j++)
if (grid[i][j] == 1 && !travelled[i][j])
{
var q = ExploreIsland(grid, i, j, travelled);
best = Math.Max(best, q);
}
return best;
}
private int ExploreIsland(int[][] grid, int i, int j, bool[][] travelled)
{
if (i < 0 || j < 0 || i >= travelled.Length || j >= travelled[0].Length) return 0;
if (grid[i][j] == 0 || travelled[i][j]) return 0;
travelled[i][j] = true;
var north = ExploreIsland(grid, i + 1, j, travelled);
var west = ExploreIsland(grid, i, j - 1, travelled);
var east = ExploreIsland(grid, i, j + 1, travelled);
var south = ExploreIsland(grid, i - 1, j, travelled);
return north + west + east + south + 1;
}
}
Временная сложность : O(n^2*m^2)
Пространственная сложность: O(n∗m)
Пишите свое решение в комментариях👇
@cpluscsharp18 304
Книга дня. Конкурентность в C#. Асинхронное, параллельное и многопоточное программирование
Автор: Стивен Клири
Автор поможет разобраться с трудностями и избежать подводных камней, возникающих при решении реальных задач. В вашем распоряжении 85 рецептов работы с .NET и C# 8.0, необходимых для параллельной обработки и асинхронного программирования.
#c_Sharp
📚Книга
@cpluscsharp
18 304
Как прокачать навыки в С++, если вы уже знаете основы языка
Разработчикам на С++, которые хотят прокачать навыки или ищут точки роста в карьере, выйти на новый этап развития поможет активное самообучение: закрепление теории и отработка знаний на практике. Вот только полагаться лучше не на случайные интернет-источники, а на материалы лидеров индустрии.
Советуем обратить внимание на бесплатный хендбук Академии Яндекса. Этот онлайн-учебник по С++ был создан специально для того, чтобы начинающие специалисты могли самостоятельно освоить новые темы, а более опытные — освежить знания. В хендбуке есть как теория, так и задачи с автопроверкой.
Сохраняйте ссылку и погружайтесь в бесплатные материалы по С++: https://clck.ru/33t57f
18 304
Подборка Топ-10 поезныйх библиотек для разработчиков .NET
1) Newtonsoft.Json: Эта библиотека широко используется для работы с данными JSON в приложениях .NET. Newtonsoft.Json обеспечивает высокую производительность и простоту использования, что делает ее отличным решением для сериализации и десериализации данных JSON.
2) Dapper: Это простой и эффективный ORM, который обеспечивает высокую производительность и гибкость при работе с реляционными базами данных. Dapper прост в использовании и предлагает быстрый и эффективный способ взаимодействия с базами данных.
3) Polly: Polly - это библиотека, которая помогает легко обрабатывать ошибки в приложениях .NET.
4) AutoMapper: Эта библиотека .NET Core упрощает сопоставление объектов с объектами путем автоматического сопоставления свойств одного объекта с другим. Эта библиотека особенно полезна в больших проектах, где сопоставление может занять много времени и стать утомительным.
5) FluentValidation: Это библиотека, которая предоставляет API для построения правил валидации. Она позволяет легко создавать сложную логику проверки и поддерживает широкий спектр скриптов валидации, что делает ее полезным инструментом для обеспечения целостности данных в ваших приложениях.
6) Serilog: Эта библиотека представляет собой структурированную библиотеку протоколирования, которая упрощает сбор и анализ журналов вашего приложения. Она обеспечивает гибкость и расширяемость и поддерживает различные источники для хранения журналов, включая Elasticsearch, SQL Server и другие.
7) Swashbuckle.AspNetCore.Swagger: Эта библиотека генерирует документацию OpenAPI для вашего ASP.NET Core Web API. Она облегчает понимание функциональности вашего API и позволяет легко генерировать код для вашего API.
😍 NLog: Это бесплатная платформа протоколирования для .NET с широкими возможностями маршрутизации и управления журналами.
9) Moq4: Это популярный фреймворк mocking для приложений .NET. Она позволяет легко создавать объекты для модульного тестирования.
10) StackExchange.Redis: Это библиотека для работы с базами данных Redis в приложениях .NET. Она предоставляет простой и эффективный способ взаимодействия с Redis, а также обеспечивает высокую производительность и масштабируемость.
@csharp_ci
18 304
🖥 Dynamic Language Runtime
DLR в C#. Ключевое слово dynamic
Хотя C# относится к статически типизированным языкам, в последних версиях языка были добавлены некоторые динамические возможности. Так, начиная с .NET 4.0 была добавлена новая функциональность под названием DLR (Dynamic Language Runtime). DLR представляет среду выполнения динамических языков, например, таких языков как IronPython и IronRuby.
Чтобы понять значение данного нововведение, нужно осознавать разичие между языками со статической и динамической типизицией. В языках со статической типизацией выявление всех типов и их членов - свойств и методов происходит на этапе компиляции. А в динамических языках системе ничего не известно о свойствах и методах типов вплоть до выполнения.
Благодаря этой среде DLR C# может создавать динамические объекты, члены которых выявляются на этапе выполнения программы, и использовать их вместе с традиционными объектами со статической типизацией.
Ключевым моментом использования DLR в C# является применение типов dynamic. Это ключевое слово позволяет опустить проверку типов во время компиляции. Кроме того, объекты, объявленные как dynamic, могут в течение работы программы менять свой тип. Например:
dynamic obj = 3; // здесь obj - целочисленное int
Console.WriteLine(obj); // 3
obj = "Hello world"; // obj - строка
Console.WriteLine(obj); // Hello world
obj = new Person("Tom", 37); // obj - объект Person
Console.WriteLine(obj); // Person { Name = Tom, Age = 37 }
record class Person(string Name, int Age);
Несмотря на то, что переменная x меняет тип своего значения несколько раз, данный код будет нормально работать. В этом использование типов dynamic отличается от применения ключевого слова var. Для переменной, объявленной с помощью ключевого слова var, тип выводится во время компиляции и затем во время выполнения больше не меняется.
Также можно найти общее между использованием dynamic и типом object. Если в предыдущем примере мы заменим dynamic на object: object x = 3;, то результат будет тот же. Однако и тут есть различия. Например:
object obj = 24;
dynamic dyn = 24;
obj += 4; // так нельзя
dyn += 4; // а так можно
На строке obj += 4; мы увидим ошибку, так как операция += не может быть применена к типам object и int. С переменной, объявленной как dynamic, это пройдет, так как ее тип будет известен только во время выполнения.
Еще одна отличительная особенность использования dynamic состоит в том, что это ключевое слово применяется не только к переменным, но и к свойствам и методам. Например:
class Person
{
public string Name { get;}
public dynamic Age { get; set; }
public Person(string name, dynamic age)
{
Name = name; Age = age;
}
// выводим зарплату в зависимости от переданного формата
public dynamic GetSalary(dynamic value, string format)
{
if (format == "string") return $"{value} euro";
else if (format == "int") return value;
else return 0.0;
}
public override string ToString() => $"Name: {Name} Age: {Age}";
}
В классе Person определено динамическое свойство Age, поэтому при задании значения этому свойству мы можем написать и person.Age=22, и person.Age="twenty-two". Оба варианта будут допустимыми. А через параметр age в конструкторе этому свойству можно передать любое значение.
Также есть метод GetSalary, который возвращает значение dynamic. Например, в зависимости от параметра мы можем вернуть или строковое представление суммы дохода или численное. Также метод принимает dynamic в качестве параметра. Таким образом, мы можем передать в качестве значения дохода как целое, так и дробное число или строку. Посмотрим на конкретное применение:
dynamic tom = new Person("Tom", 22);
Console.WriteLine(tom);
Console.WriteLine(tom.GetSalary(28, "int"));
dynamic bob = new Person("Bob", "twenty-two");
Console.WriteLine(bob);
Console.WriteLine(bob.GetSalary("twenty-eight", "string"));
Консольный вывод программы:
Name: Tom Age: 22
28
Name: Bob Age: twenty-two
twenty-eight euro
@csharp_ci18 304
Техническое собеседование С# разработчика в прямом эфире!
📆 Дата: 21 апреля
👉 Тема: Как пройти техническое собеседование на С# разработчика и получить оффер. Решаем реальные задания в прямом эфире
Мы проведем демо-собеседование, на котором разберем реальные задачи, которые просят решить нанимающие менеджеры на интервью, а также вы получите полезные рекомендации по прохождению технического интервью и узнаете ответы на актуальные вопросы, которые задают на собеседовании.
Действующие герои вебинара:
— Нанимающий менеджер: Антон Герасименко, Lead Developer в компании «Интелеком Лайн».
— Кандидат: Артур Хисматуллин, C# разработчик.
👉 Для участия нужно зарегистрироваться и пройти тест https://otus.pw/JmWU/
📌 Открытый урок пройдет в рамках онлайн-курса «C# Developer. Professional» в OTUS.
Реклама. Информация о рекламодателе на сайте www.otus.ru
18 304
⚡️ Testcontainers для .NET
Проект для поддержки тестов с одноразовыми экземплярами Docker-контейнеров для всех совместимых версий .NET Standard.
Testcontainers построен на основе API .NET Docker и обеспечивает упрощенную реализацию для поддержки вашей тестовой среды.
🖥 Github
@csharp_ci
18 304
Готовы освоить Best Practice по разработке микросервисной архитектуры и сложных отказоустойчивых систем? Сделайте первые шаги на открытом уроке «Модульные монолиты и DDD» 🗓 17 апреля в 20:00 мск в OTUS.
На занятии вместе со Станиславом Щетинниковым, директором разработки с 10-летним опытом, рассмотрим основные паттерны для построения и написания модульных монолитов. Особое внимание будет уделено паттернам DDD.
👨💻 Занятие будет полезно для back-end разработчикам, тимлидам и администраторам.
👉 Для регистрации на урок пройдите вступительное тестирование — https://otus.pw/5SwK/
А если вам понравятся бесплатные уроки, продолжить обучение можно будет уже на курсе «Microservice architecture» от OTUS. Оплата курса возможна в рассрочку.
18 304
Цикл статей для тех, кто заботится об экономии наносекунд и оптимизации на уровне IL-кода. Кто знает, может вы работаете в хайлоад проектах или в геймдеве.
🚀 Array: for/foreach или unsafe
🚀 Dictionary<int, T>: очень специальный
🚀 Inline и throw
18 304
Вакансии для разработчиков C# в Ozon Tech 🔔
⏩Для кого: middle, senior и team lead
⏩Скилы, которые ждем: C# (.NetCore), MSSQL, PostgreSQL, разработка высоконагруженных real-time систем
Решай интересные highload-задачи и применяй лучшие практики, чтобы миллионы пользователей могли совершать сотни тысяч заказов в день и получать их вовремя.
⏩Условия: удаленка, гибрид или офис (Россия, Казахстан) — выбирать только тебе
Подробную информацию о вакансиях, включая задачи и условия, можно найти на сайте по ссылке: http://bit.ly/43uAQyo
18 304
🛠 Entity Framework Core Power Tools — инструмент для обратной разработки (reverse engineering), миграции и визуализация моделей для EF Core.
Инструмент стремится снизить планку для начала работы с EF Core, предоставляя удобный UI с обратной разработкой существующей базы данных, созданием миграций и визуализацией вашей модели DbContext.
🖥 Github
@csharp_ci1
18 304
Современные технологии на .NET: в Ozon идет набор на бесплатный курс для опытных С#-разработчиков
Курс будут вести инженеры Ozon: вебинары и воркшопы подготовлены разработчиками, которые каждый день строят современное e-com решение.
После курса ты сможешь:
🔹Создавать и настраивать микросервисы на ASP.NET Core
🔹Эффективно работать с асинхронным кодом
🔹Проектировать сложные распределенные системы
🔹Создавать REST и gRPC API
🔹Оптимизировать SQL-запросы
🔹Работать с Kafka
Как попасть на курс?
Оставь заявку на сайте ➡️ 30 апреля пройди отборочный контест ➡️ попади в рейтинг лучших ➡️ развивайся под менторством экспертов Ozon.
Регистрация на отборочный контест
现已上线!2025 年 Telegram 研究 — 年度关键洞察 
