Раньше приходилось писать так:
private string _email;
public string Email
{
get => _email;
set => _email = value.Trim().ToLowerInvariant();
}
Начиная с C# 14 можно использовать field — ссылку на автоматически сгенерированное backing field:
public string Email
{
get;
set => field = value.Trim().ToLowerInvariant();
}
Подходит для:
⚠️ Если в классе уже есть член с именем field, внутри аксессора приоритет получит новое ключевое слово. Для обращения к своему члену используйте @
field или this.field.
#sharp_view
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11
В видео разбирают, как реализовать аналог pipeline behaviors через стандартный DI-контейнер без дополнительной зависимости.
Обсуждаются:
— зачем вообще нужен MediatR
— когда он действительно полезен
— как заменить его встроенными инструментами .NET
— какие компромиссы появляются при таком подходе
P.S. Видео на английском языке, можно включить субтитры
#il_люминатор
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🌚2
До сих пор в C# не было встроенного способа описать тип «либо одно, либо другое». Приходилось использовать наследование, object или сторонние библиотеки вроде OneOf.
В .NET 11 Preview появилась экспериментальная возможность — union.
public record class Dog(string Name);
public record class Cat(int Lives);
public union Pet(Dog, Cat);
static string Describe(Pet pet) => pet switch
{
Dog(var name) => $"dog: {name}",
Cat(var lives) => $"cat: {lives}"
};
Что это даёт:
Рядом появилась и поддержка закрытых иерархий (closed), которая позволяет компилятору анализировать всех наследников типа и также проверять исчерпывающее сопоставление с образцом.
Идею union types сообщество просило больше десяти лет. Если фича дойдёт до релиза без серьёзных изменений, моделировать состояния, результаты операций и альтернативные типы станет заметно проще.
#async_news
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥30❤2
🔥 Строишь ИИ-агентов? Руководитель AI/ML-направления Сloud․ru покажет, где большинство архитектур ломаются, и как этого избежать.
18 июня в 19:00 совместно с Сloud․ru проведём открытый урок «Мультиагентные системы: почему большинство архитектур переусложнены».
Спикер — Дмитрий Юдин, эксперт по масштабированию и оптимизации вычислительных ресурсов для ML. Под его руководством развивается Evolution AI Factory — цифровая среда для работы с GenAI. Он занимается развитием сервисов генеративного ИИ, инфраструктуры для обучения больших языковых моделей и внедрением интеллектуальных агентов.
Что получишь на уроке:
— критерии выбора между одним агентом и мультиагентной системой;
— разбор популярных архитектурных ошибок;
— реальные ограничения современных ИИ-агентов;
— практические рекомендации по проектированию агентных систем.
🎁 Для участников урока подготовили промокод на скидку 10 000 ₽.
🗓️ Когда: 18 июня, 19:00 (МСК)
👉 Занять место на открытом уроке
18 июня в 19:00 совместно с Сloud․ru проведём открытый урок «Мультиагентные системы: почему большинство архитектур переусложнены».
Спикер — Дмитрий Юдин, эксперт по масштабированию и оптимизации вычислительных ресурсов для ML. Под его руководством развивается Evolution AI Factory — цифровая среда для работы с GenAI. Он занимается развитием сервисов генеративного ИИ, инфраструктуры для обучения больших языковых моделей и внедрением интеллектуальных агентов.
Что получишь на уроке:
— критерии выбора между одним агентом и мультиагентной системой;
— разбор популярных архитектурных ошибок;
— реальные ограничения современных ИИ-агентов;
— практические рекомендации по проектированию агентных систем.
🎁 Для участников урока подготовили промокод на скидку 10 000 ₽.
🗓️ Когда: 18 июня, 19:00 (МСК)
👉 Занять место на открытом уроке
❤🔥2🔥2
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔4🥱1
Please open Telegram to view this post
VIEW IN TELEGRAM
👏5
Правильный ответ:
Многие ожидают увидеть 20, но здесь есть важная деталь:
Counter — это struct, а значит значимый тип (value type).
Когда выполняется:
var c2 = c1;
создаётся не ссылка на объект, а полная копия структуры.
После этой строки в памяти фактически находятся два независимых экземпляра:
c1 -> Value = 10 c2 -> Value = 10
Затем меняется только копия:
c2.Value = 20;
Теперь состояние выглядит так:
c1 -> Value = 10 c2 -> Value = 20
Поэтому вывод будет: 10
Для сравнения, если бы Counter был классом:
public class Counter
{
public int Value;
}
то после:
var c2 = c1;
обе переменные ссылались бы на один и тот же объект, и результатом был бы уже 20.
#dotnet_challenge
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱15👍3❤🔥1
💻 3 курса по цене одного — собери стек для оффера в топовую IT-компанию
Для следующего карьерного шага мало писать код. Работодатели ждут не только знания языка, но и понимания архитектуры, алгоритмов, автоматизации, AI-инструментов и агентных систем.
Одно направление закрывает только часть задачи.
Поэтому сейчас мы предлагаем освоить сразу несколько востребованных навыков — выбери любой курс и получи доступ еще к двум бесплатно 🔥
Собери стек навыков под свою цель:
🔹 подготовка к сильным компаниям (алгоритмы, архитектура);
🔹 переход в AI-направление (ИИ-агенты, AgentOps);
🔹 развитие в ML и Data Science (математика, основы ML);
🔹 новый оффер и рост дохода.
Полученные знания применяешь в работе уже во время обучения.
⏳ Акция действует 48 часов — 13 и 14 июня.
👉 Переходи на сайт, выбирай курсы и оставляй заявку — за 10 минут поможем собрать комплект под твою цель.
Для следующего карьерного шага мало писать код. Работодатели ждут не только знания языка, но и понимания архитектуры, алгоритмов, автоматизации, AI-инструментов и агентных систем.
Одно направление закрывает только часть задачи.
Поэтому сейчас мы предлагаем освоить сразу несколько востребованных навыков — выбери любой курс и получи доступ еще к двум бесплатно 🔥
Собери стек навыков под свою цель:
🔹 подготовка к сильным компаниям (алгоритмы, архитектура);
🔹 переход в AI-направление (ИИ-агенты, AgentOps);
🔹 развитие в ML и Data Science (математика, основы ML);
🔹 новый оффер и рост дохода.
Полученные знания применяешь в работе уже во время обучения.
⏳ Акция действует 48 часов — 13 и 14 июня.
👉 Переходи на сайт, выбирай курсы и оставляй заявку — за 10 минут поможем собрать комплект под твою цель.
❤3🥱1
Нужно хранить пользователей в HashSet по email? Убирать дубли через Distinct? Группировать объекты по ключу?
Раньше для этого часто приходилось писать собственный IEqualityComparer<T>.
var users = new HashSet<User>(
EqualityComparer<User>.Create(
user => user!.Email,
StringComparer.OrdinalIgnoreCase));
users.Add(new User("ada@example.com", "Ada"));
users.Add(new User("ADA@example.com", "Ada Lovelace"));
Console.WriteLine(users.Count); // 1
Здесь сравнение выполняется по Email без учёта регистра.
Плюс такого подхода в том, что логика равенства остаётся локальной и не требует переопределения Equals и GetHashCode у самого типа.
Работает везде, где принимается IEqualityComparer<T>: HashSet, Distinct, GroupBy, ToDictionary и не только.
⚠️ Пока доступно в .NET 11 Preview 5.
#async_news
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16❤8
🎥 До открытого урока — несколько дней. Подготовили небольшую подборку материалов от нашего спикера Дмитрия Юдина.
Дмитрий руководит AI/ML-направлением в Сloud․ru и развивает Evolution AI Factory — среду для работы с GenAI: от инфраструктуры обучения LLM до внедрения интеллектуальных агентов.
С чего начать:
📺 AI-инструменты для разработчиков — как код, автотесты и ассистенты меняют рутину инженера.
📺 AI-эволюция бизнеса в эпоху генеративных моделей — агентные системы в реальных продуктах.
📺 Разработка мертва? — дискуссия о будущем профессии и роли AI в ней.
📖 Применение LLM в бизнесе — статья Дмитрия о практике внедрения и роли облака.
Одна из ключевых тем Дмитрия — практическое применение агентных систем и их ограничения.
Именно об этом — бесплатный урок 18 июня в 19:00: «Мультиагентные системы: почему большинство архитектур переусложнены» 🔥
🎁 Для участников подготовили промокод на скидку 10 000 ₽ на курс «Разработка ИИ-агентов».
👉 Успей занять место на открытом уроке
Дмитрий руководит AI/ML-направлением в Сloud․ru и развивает Evolution AI Factory — среду для работы с GenAI: от инфраструктуры обучения LLM до внедрения интеллектуальных агентов.
С чего начать:
📺 AI-инструменты для разработчиков — как код, автотесты и ассистенты меняют рутину инженера.
📺 AI-эволюция бизнеса в эпоху генеративных моделей — агентные системы в реальных продуктах.
📺 Разработка мертва? — дискуссия о будущем профессии и роли AI в ней.
📖 Применение LLM в бизнесе — статья Дмитрия о практике внедрения и роли облака.
Одна из ключевых тем Дмитрия — практическое применение агентных систем и их ограничения.
Именно об этом — бесплатный урок 18 июня в 19:00: «Мультиагентные системы: почему большинство архитектур переусложнены» 🔥
🎁 Для участников подготовили промокод на скидку 10 000 ₽ на курс «Разработка ИИ-агентов».
👉 Успей занять место на открытом уроке
❤4🥱3
This media is not supported in your browser
VIEW IN TELEGRAM
Sololearn предлагает интерактивный курс по C# среднего уровня с практическими заданиями и встроенной AI-проверкой решений.
В программе:
— массивы
— ООП
— структуры и enum
— исключения
— работа с файлами
— generics
Подойдёт тем, кто уже знает основы языка и хочет закрепить их на практике.
#sharp_view
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6🤔2
Многие представляют
StringBuilder как один массив символов, который растёт по мере добавления текста. На самом деле внутри он устроен как связный список кусков, и из этого вытекает почти всё его поведение.StringBuilder хранит текущий кусок, обычный char[], и ссылку на предыдущий кусок. Когда вы вызываете Append, символы пишутся в текущий кусок. Как только в нём кончается место, выделяется новый кусок, а старый остаётся висеть в цепочке позади. Получается список кусков, направленный назад, от последнего к первому.Append в среднем дешёвый, потому что чаще всего это запись в уже выделенный кусок без копирования всего текста. ToString дороже, ведь он проходит по всей цепочке и собирает символы в одну новую строку. Индексатор по символу на длинном тексте тоже не бесплатный, так как может потребоваться пройти по нескольким кускам, чтобы добраться до нужной позиции.Эта же модель объясняет свежий метод
MoveChunks из .NET 11 Preview 5. Раз текст это цепочка кусков, передать его в другой билдер можно, просто переставив ссылку на цепочку, без копирования символов. Поэтому операция и выполняется за O(1), а исходный билдер остаётся пустым, но рабочим.#il_люминатор
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15❤2
Forwarded from Библиотека задач по C# | тесты, код, задания
Что такое IoC-контейнеры?
👾 — управляет зависимостями в приложении, автоматически создавая и внедряя объекты.
👍 — инвертирует управление созданием объектов, снижая связность между компонентами.
🥰 — упрощают код, управляя жизненным циклом и зависимостями объектов.
⚡️ — разрешает зависимости между классами и помогает внедрять их через конструкторы или свойства.
🐸 Библиотека задач по C#
👾 — управляет зависимостями в приложении, автоматически создавая и внедряя объекты.
👍 — инвертирует управление созданием объектов, снижая связность между компонентами.
🥰 — упрощают код, управляя жизненным циклом и зависимостями объектов.
Please open Telegram to view this post
VIEW IN TELEGRAM
👾22👍11⚡1
understanding git reset models.jpeg
202.3 KB
Команды
git reset --soft, --mixed и --hard путают даже опытных разработчиков, потому что Git одновременно работает с историей коммитов, индексом и рабочей директорией.— оставить изменения в staging area
— снять файлы со staging
— полностью откатить локальные изменения
В этой шпаргалке собраны основные различия между всеми режимами git reset и показано, что именно происходит с HEAD, индексом и рабочими файлами
#схема
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6🔥1
⏰ Уже сегодня в 19:00 (МСК) стартует открытый урок!
Тема:
🔥 За 90 минут разберёмся, когда действительно стоит строить мультиагентную систему, а когда она только добавляет сложность, расходы и новые точки отказа.
Поговорим о критериях выбора архитектуры, типичных ошибках и ограничениях современных ИИ-агентов, которые важно учитывать ещё до внедрения в продукт.
🎙️ Спикер — Дмитрий Юдин, руководитель AI/ML-направления в Сloud․ru.
🎁 Для всех участников подготовили промокод на скидку 10 000 ₽ на курс «Разработка ИИ-агентов».
👉 Успей присоединиться к уроку
Тема:
«Мультиагентные системы: почему большинство архитектур переусложнены»
🔥 За 90 минут разберёмся, когда действительно стоит строить мультиагентную систему, а когда она только добавляет сложность, расходы и новые точки отказа.
Поговорим о критериях выбора архитектуры, типичных ошибках и ограничениях современных ИИ-агентов, которые важно учитывать ещё до внедрения в продукт.
🎙️ Спикер — Дмитрий Юдин, руководитель AI/ML-направления в Сloud․ru.
🎁 Для всех участников подготовили промокод на скидку 10 000 ₽ на курс «Разработка ИИ-агентов».
👉 Успей присоединиться к уроку
❤4🥱3👍1
Ещё несколько лет назад AutoMapper был почти стандартом для .NET-проектов. Сегодня всё чаще встречаются ручной маппинг, Mapperly, Mapster и другие source generators.
Одни не хотят тащить дополнительную магию ради пары присваиваний. Другие не готовы писать одинаковый код для десятков DTO.
#entry_point
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤1🤔1🌚1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤2
Please open Telegram to view this post
VIEW IN TELEGRAM
😁15
🤖 Используешь AI для написания кода? В Яндексе покажут, как применять AI для реальных задач разработки.
23 июня в 19:00 совместно с Яндексом проведём открытый урок «AI-инструменты в разработке: как писать код быстрее с помощью ассистентов».
Спикер — Ольга Лукьянова, руководитель команды поиска и навигации по коду в SourceCraft. Более 18 лет развивала инструменты для разработчиков в JetBrains и руководила разработкой IDE в Huawei.
Что получишь на уроке:
— поймёшь, как использовать AI-ассистентов и облачных агентов в работе;
— научишься быстрее разбираться в новых проектах и кодовой базе;
— узнаешь, какие задачи стоит отдавать AI и как получать качественный результат;
— увидишь полный workflow работы с AI: от постановки задачи до код-ревью.
На уроке — живой разбор реального проекта с кодом. Ольга покажет промпты из рабочих сценариев и ответит на ваши вопросы в Q&A.
⚠️ Количество мест ограничено
🗓️ Когда: 23 июня, 19:00 (МСК)
👉 Занять место на открытом уроке
23 июня в 19:00 совместно с Яндексом проведём открытый урок «AI-инструменты в разработке: как писать код быстрее с помощью ассистентов».
Спикер — Ольга Лукьянова, руководитель команды поиска и навигации по коду в SourceCraft. Более 18 лет развивала инструменты для разработчиков в JetBrains и руководила разработкой IDE в Huawei.
Что получишь на уроке:
— поймёшь, как использовать AI-ассистентов и облачных агентов в работе;
— научишься быстрее разбираться в новых проектах и кодовой базе;
— узнаешь, какие задачи стоит отдавать AI и как получать качественный результат;
— увидишь полный workflow работы с AI: от постановки задачи до код-ревью.
На уроке — живой разбор реального проекта с кодом. Ольга покажет промпты из рабочих сценариев и ответит на ваши вопросы в Q&A.
⚠️ Количество мест ограничено
🗓️ Когда: 23 июня, 19:00 (МСК)
👉 Занять место на открытом уроке
❤4🥱1
🤖 Мы тут подготовили небольшую игру по ИИ-агентам
В ней нужно собрать AI-агента на LangGraph: выбрать узлы, пройти развилки и запустить собственный workflow.
Никакой теории — сразу практика. Можно наглядно увидеть, как работают агентные системы, проверьте свои знания или показать другим как это всё работает 🔥
🎁 За прохождение получите персональную скидку на курс. Чем больше баллов наберете — тем больше будет скидка.
Плюс сейчас действует предложение: покупаешь 1 курс, получаешь еще 2 любых в подарок. Для этого надо будет оставить заявку на сайте академии после прохождения игры.
🚀 Собрать своего AI-агента
В ней нужно собрать AI-агента на LangGraph: выбрать узлы, пройти развилки и запустить собственный workflow.
Никакой теории — сразу практика. Можно наглядно увидеть, как работают агентные системы, проверьте свои знания или показать другим как это всё работает 🔥
🎁 За прохождение получите персональную скидку на курс. Чем больше баллов наберете — тем больше будет скидка.
Плюс сейчас действует предложение: покупаешь 1 курс, получаешь еще 2 любых в подарок. Для этого надо будет оставить заявку на сайте академии после прохождения игры.
🚀 Собрать своего AI-агента
🔥1
После установки плагина .NET Disassembler становится доступно окно ASM Viewer, где можно посмотреть нативный код, который сгенерировали:
Поддерживаются x86, x64 и ARM64.
Это удобно, когда нужно проверить:
✅ произошёл ли инлайнинг✅ как JIT оптимизировал код✅ какое влияние оказывают PGO и Tiered Compilation✅ почему одна реализация работает быстрее другой
Раньше для такого анализа обычно использовали BenchmarkDotNet, специальные флаги рантайма или сторонние утилиты. Теперь дизассемблированный код можно открыть прямо в IDE.
#il_люминатор
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6🔥4