Делегаты в шарпах — штука базовая, но в деталях легко запутаться. Посмотрите на код и предскажите вывод, прежде чем проверять.
📍 Навигация: Вакансии • Задачи • Собесы
#dotnet_challenge
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱9👍2😢2
Конструкторы вызываются при создании объекта. В C# можно связывать их в цепочку: один конструктор вызывает другой. Это убирает дублирование кода инициализации.
Представьте класс User с тремя конструкторами:
public class User
{
public string Name { get; set; }
public string Email { get; set; }
public int Age { get; set; }
public DateTime Created { get; set; }
// Базовая инициализация
public User()
{
Created = DateTime.Now;
Name = "Гость";
Email = "guest@example.com";
}
public User(string name)
{
Created = DateTime.Now; // Дублируем!
Name = name;
Email = "guest@example.com";
}
public User(string name, string email)
{
Created = DateTime.Now; // Снова дублируем!
Name = name;
Email = email;
}
}
Проблема: Created и дефолтные значения повторяются. Изменить в одном месте нельзя.
Как работает цепочка с this()
Используйте
: this(параметры):public class User
{
public string Name { get; set; }
public string Email { get; set; }
public int Age { get; set; }
public DateTime Created { get; set; }
// Главный конструктор - вся логика здесь
public User(string name, string email, int age = 0)
{
Created = DateTime.Now;
Name = name ?? "Гость";
Email = email ?? "guest@example.com";
Age = age;
}
// Цепочка к главному
public User() : this("Гость", "guest@example.com") { }
public User(string name) : this(name, "guest@example.com") { }
public User(string name, string email) : this(name, email, 0) { }
}
Тестируем:
var user1 = new User(); // Гость, guest, 0
var user2 = new User("Иван"); // Иван, guest, 0
var user3 = new User("Иван", "i@example"); // Иван, i@example, 0
var user4 = new User("Анна", "a@ex", 25); // Анна, a@ex, 25
Все получают
Created = Now автоматическиПравила цепочки:
• Должна быть первой в конструкторе:
public User(string name) : this(name, "default") // OK
{
// Дополнительная логика
}
• Нельзя дважды:
public User() : this("a") : base() // Ошибка!Идеально для классов с множеством опциональных параметров. Главное: короткие цепочки и главный конструктор с полной логикой.
📍 Навигация: Вакансии • Задачи • Собесы
#sharp_view
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱9❤7🤩5😁1
🛍 Microsoft Store из терминала
Windows 11 получила встроенный CLI для Microsoft Store. Команда store ищет, устанавливает и обновляет приложения из Store прямо из командной строки. Быстрее winget и с поддержкой платных приложений.
Команда
Основные команды
Поиск приложений:
Похожие приложения:
Установка:
Список установленных:
Обновления:
По сути Store CLI - это winget только для Microsoft Store.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека шарписта
#async_news
Windows 11 получила встроенный CLI для Microsoft Store. Команда store ищет, устанавливает и обновляет приложения из Store прямо из командной строки. Быстрее winget и с поддержкой платных приложений.
Команда
store покажет все команды. Работает из коробки на Windows 11 версии preview v22511.1401.5.0.Основные команды
Поиск приложений:
store search vlc
store search "notepad++"
store search powertoys
Похожие приложения:
store similar vlc
Установка:
store install vlc
store install 9NBLGGH4NNS1 # ProductId
Список установленных:
store installed
Обновления:
store updates
store upgrade vlc
store upgrade --all
По сути Store CLI - это winget только для Microsoft Store.
📍 Навигация: Вакансии • Задачи • Собесы
#async_news
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Redirect в ASP.NET перенаправляет пользователя на другой URL с кодом 302 Found. Это временное перемещение, когда браузер каждый раз проверяет исходный адрес.
Основные примеры использования:
// 1. Абсолютный путь
return Redirect("https://example.com");
// 2. Относительный путь
return Redirect("/admin/dashboard");
// 3. Действие контроллера
return RedirectToAction("Edit", "User", new { id = model.Id });
// 4. URL с параметрами
return Redirect($"/products?category={categoryId}");
Redirect подходит для временных переходов. Для постоянных ссылок переходите на RedirectPermanent.
📍 Навигация: Вакансии • Задачи • Собесы
#sharp_view
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6
Год завершается, самое время подвести итоги. 2025 принёс нам .NET 10 — юбилейный LTS-релиз.
Релиз состоялся 11 ноября 2025 года. Сами Microsoft называет его самым производительным, современным и безопасным выпуском платформы.
• Улучшения JIT-компилятора: инлайнинг, девиртуализация методов, оптимизация генерации кода для struct-аргументов.
• Поддержка AVX10.2 для Intel и Arm64 SVE для продвинутой векторизации.
• Улучшения NativeAOT: меньше размер, быстрее запуск.
• Стековая аллокация для маленьких массивов фиксированного размера.
• Встроенная поддержка AI через новый Microsoft Agent Framework
• Постквантовая криптография: добавлена поддержка алгоритмов ML-KEM (FIPS 203), ML-DSA (FIPS 204) и SLH-DSA (FIPS 205).
C# 14 обновили большим количеством фич: ключевое слово field, блоки расширений, partial-конструкторы и события, оператор null-conditional assignment, перегрузку составных операторов присваивания, модификаторы параметров в лямбдах без указания типа.
У нас был цикл постов про обновления F#. От подавления предупреждений до авто-свойств.
• Полная поддержка типа данных vector и функции VECTOR_DISTANCE() для Azure SQL Database и SQL Server 2025
• EF Core 10 добавляет first-class поддержку операторов LeftJoin и RightJoin
• Теперь можно назначать имена фильтрам и управлять ими по отдельности
• Декларативное сохранение состояния через атрибут
[PersistentState] • Circuit state persistence — пользователи могут возобновить сессию после дисконнекта.
• blazor.web.js теперь сжимается: размер уменьшился на 76% — со 183 KB до ~43 KB.
• Встроенная страница NotFound.razor в шаблонах.
• Полная поддержка OpenAPI 3.1 и YAML-формата для API-документации.
• XAML компилируется во время сборки, а не парсится в runtime
• Новый шаблон проекта для интеграции MAUI с .NET Aspire
• Экспериментальная возможность использовать CoreCLR вместо Mono
.NET Aspire
• Команды aspire new, aspire run, aspire config и preview-команды aspire publish/deploy
• Можно определить Aspire AppHost без традиционного project file
• Типизированные клиентские библиотеки для GitHub Models, Azure AI Foundry и OpenAI
• Более 5000 исправленных багов и 300 реализованных фич.
• Запуск приложений до 30% быстрее по сравнению с VS 2022
• IDE отвязана от build tools — можно обновлять IDE без влияния на toolchain
• Полная поддержка .NET 10 и C# 14
Год получился насыщенным. Все события можно найти по хэштегу #async_news.
📍 Навигация: Вакансии • Задачи • Собесы
#async_news
Please open Telegram to view this post
VIEW IN TELEGRAM
1👏12❤2
📍 Навигация: Вакансии • Задачи • Собесы
#garbage_collector
Please open Telegram to view this post
VIEW IN TELEGRAM
AI-агенты: почему LangChain и ReAct — это must-have для шарписта 🛠️
Интеграция ИИ в корпоративный софт больше не ограничивается вызовом API. Нужно строить сложные системы с памятью и автономной логикой.
На курсе мы разберём передовой стек разработки мультиагентных систем.
Ключевые темы:
— реализация логики «Reasoning + Acting» для полной автономности;
— использование
— применение протокола
— построение масштабируемого
Создайте систему из нескольких агентов, которая возьмёт на себя сложную аналитику и поддержку клиентов.
Старт курса 🚀
Интеграция ИИ в корпоративный софт больше не ограничивается вызовом API. Нужно строить сложные системы с памятью и автономной логикой.
На курсе мы разберём передовой стек разработки мультиагентных систем.
Ключевые темы:
— реализация логики «Reasoning + Acting» для полной автономности;
— использование
n8n как мощного визуального оркестратора процессов;— применение протокола
MCP от Anthropic для надёжной связи;— построение масштабируемого
RAG для работы с Big Data.Создайте систему из нескольких агентов, которая возьмёт на себя сложную аналитику и поддержку клиентов.
Старт курса 🚀
RedirectPermanent работает в контроллерах MVC и Core. Метод отправляет статус 301 Moved Permanently, браузеры кэшируют такой редирект и сразу переходят на новый адрес без повторных запросов к старому.
В контроллере это выглядит просто:
public IActionResult OldPage()
{
return RedirectPermanent("/new-page");
}
Здесь запрос на /old-page уйдет на /new-page с кодом 301. Поисковики обновят индекс и перестанут индексировать старый адрес.
Разница с обычным
Redirect в статусе ответа. Redirect (302) говорит «временно перемещено», браузер каждый раз проверяет старый URL. RedirectPermanent (301) фиксирует «навсегда», что экономит трафик и улучшает SEO.📍 Навигация: Вакансии • Задачи • Собесы
#sharp_view
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤2🥰2🤔1
Пока вы думаете, что «не хватает времени» или «сложные обстоятельства» — Стас перенёс две нейрохирургические операции, собирает себя по кусочкам, при этом проходит курс по C++, пилит проекты для портфолио и откликается на вакансии.
📍 Навигация: Вакансии • Задачи • Собесы
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8💯6
📂 Files для Windows 11 получил интеграцию с PowerToys
Files это популярный сторонний файловый менеджер для Windows 11. В новости пишут, что он получил интеграцию с одной из самых удобных утилит PowerToys, которая делает быстрый предпросмотр файлов.
Речь про Peek. Вы выделяете файл и жмёте Ctrl плюс Space, и файл открывается в лёгком окне предпросмотра. Это работает как быстрый просмотр, без запуска отдельного приложения.
➡️ Источник
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека шарписта
#async_news
Files это популярный сторонний файловый менеджер для Windows 11. В новости пишут, что он получил интеграцию с одной из самых удобных утилит PowerToys, которая делает быстрый предпросмотр файлов.
Речь про Peek. Вы выделяете файл и жмёте Ctrl плюс Space, и файл открывается в лёгком окне предпросмотра. Это работает как быстрый просмотр, без запуска отдельного приложения.
📍 Навигация: Вакансии • Задачи • Собесы
#async_news
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👾1
Часто новички в функциональном программировании думают, что сделали иммутабельный код. Берут список, вызывают
ToList() или Select() и радуются новому списку. Но в C# это ловушка.Проблема в ссылочных типах.
var copy = original.ToList() создаёт новый List, но все элементы внутри — те же самые объекты. Меняете свойство через copy, и оригинал тоже меняется. Правило трёх
• Records с init-only свойствами для value-like поведения
• ImmutableList<T> из System.Collections.Immutable — настоящие неизменяемые коллекции
• Struct только для маленьких типов
📍 Навигация: Вакансии • Задачи • Собесы
#sharp_view
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14😁1🥱1
Открытые геттеры и сеттеры кажутся удобными, но позволяют внешнему коду разрушить внутреннюю логику объекта. Можно предоставлять методы, которые гарантируют соблюдение правил.
Например, в заказе количество позиций не должно быть отрицательным. Но с сеттером любой вызовет
orderItem.setQuantity(-1000). Объект становится некорректным, а баги проявятся позже.Создайте метод, который принимает ID товара и новое значение. Внутри проверьте, что число положительное, обновите поле и пересчитайте сумму.
Пример:
public void ChangeQuantity(string itemId, int newQuantity) {
if (newQuantity < 0) throw new ArgumentException("Количество не может быть отрицательным");
var item = items.FirstOrDefault(i => i.Id == itemId);
if (item != null) {
item.Quantity = newQuantity;
RecalculateTotal();
}
} Так внешний код не может нарушить правила. Можно ограничить сеттер проверкой, но множество проверок может сломать принцип единой ответственности.
📍 Навигация: Вакансии • Задачи • Собесы
#il_люминатор
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
🤔 Не знаете, в чём встречать Новый год? Не беда!
Tproger как раз собрал стек новогодних нарядов, чтобы вы сияли ярче, чем любая гирлянда. Скорее заходите в виртуальную примерочную и выбирайте скин! 💃
Реклама. ИП Михайлишина Гузель Фаниловна.
ИНН 165042823905. Erid 2VtzqukJLdp
Tproger как раз собрал стек новогодних нарядов, чтобы вы сияли ярче, чем любая гирлянда. Скорее заходите в виртуальную примерочную и выбирайте скин! 💃
Реклама. ИП Михайлишина Гузель Фаниловна.
ИНН 165042823905. Erid 2VtzqukJLdp
😁3
📅 Даты и время в .NET без сюрпризов
В .NET есть разные типы под разные задачи, и из этого обычно и растут ошибки. DateTime это просто дата и время, но без явного смещения. DateTimeOffset хранит дату, время и смещение от UTC, поэтому однозначно задает момент времени.
Для часовых поясов используйте
Еще два полезных типа.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека шарписта
#sharp_view
В .NET есть разные типы под разные задачи, и из этого обычно и растут ошибки. DateTime это просто дата и время, но без явного смещения. DateTimeOffset хранит дату, время и смещение от UTC, поэтому однозначно задает момент времени.
Для часовых поясов используйте
TimeZoneInfo, Microsoft прямо пишет, что для новой разработки лучше TimeZoneInfo вместо старого TimeZone.var nowUtc = DateTimeOffset.UtcNow;
var moscow = TimeZoneInfo.FindSystemTimeZoneById("Europe/Moscow");
var nowMoscow = TimeZoneInfo.ConvertTime(nowUtc, moscow);
Console.WriteLine(nowUtc);
Console.WriteLine(nowMoscow);
TimeZoneInfo умеет переводить время между часовыми поясами, а DateTimeOffset делает момент переносимым между машинами и окружениями.Еще два полезных типа.
DateOnly для календарной даты без времени, например отпуск или дата рождения. TimeOnly для времени без даты, например расписание.var vacation = new DateOnly(2026, 1, 10);
var standup = new TimeOnly(10, 30);
Console.WriteLine(vacation);
Console.WriteLine(standup);
DateOnly и TimeOnly заменяют костыли с DateTime и TimeSpan, когда вам не нужен момент времени.📍 Навигация: Вакансии • Задачи • Собесы
#sharp_view
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17❤1
Есть два типа людей: те, кто ставит ёлку в начале декабря и наслаждается атмосферой целый месяц, и те, кто украшает её 31-го под бой курантов.
💬 Скидывайте фото своих ёлок в комменты 👇
📍 Навигация: Вакансии • Задачи • Собесы
#entry_point
Please open Telegram to view this post
VIEW IN TELEGRAM
🎄 С Новым годом, шарписты!
🐸 Библиотека шарписта
var year = new Year(2026);
year.Wishes = new[] { "чистый код", "нулевой техдолг", "стабильный прод" };
while (year.InProgress)
{
await you.Ship(Features.Amazing);
await you.Avoid(Bugs.Critical);
you.Happiness++;
}
Please open Telegram to view this post
VIEW IN TELEGRAM
28❤🔥46🎉11
🎆 Праздники — время лучшего контента 2025
Новый год наступил, но мы не уходим на каникулы. Все праздники публикуем топовые посты года — те, что вы сохраняли в закладки и пересылали коллегам.
➡️ Ежедневные порции лучшего по хэштегу #лучшее_из_библиотеки_2025
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека шарписта
Новый год наступил, но мы не уходим на каникулы. Все праздники публикуем топовые посты года — те, что вы сохраняли в закладки и пересылали коллегам.
📍 Навигация: Вакансии • Задачи • Собесы
Please open Telegram to view this post
VIEW IN TELEGRAM
Мы уже поднимали тему выбора IDE. Сейчас повторим, потому что смена IDE часто совпадает с переходом на новый проект или новый стек.
👍 За Visual Studio
Остальное в комменты 👇
💬 Что у вас сейчас в роли основной IDE и что бесит больше всего в выбранном варианте?
📍 Навигация: Вакансии • Задачи • Собесы
#лучшее_из_библиотеки_2025
Please open Telegram to view this post
VIEW IN TELEGRAM
👍241🔥222❤5👾2
#️⃣ Async Task в Unity против корутин
Мы уже делились этим разбором в марте, и сейчас самое время напомнить. В статье хорошо объясняют, что корутины это не настоящая параллельность, они просто размазывают выполнение по кадрам и все равно живут в основном потоке.
Поэтому если внутри корутины сделать блокирующую работу, игра встанет.
➡️ Освежить статью в памяти
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека шарписта
#лучшее_из_библиотеки_2025
Мы уже делились этим разбором в марте, и сейчас самое время напомнить. В статье хорошо объясняют, что корутины это не настоящая параллельность, они просто размазывают выполнение по кадрам и все равно живут в основном потоке.
Поэтому если внутри корутины сделать блокирующую работу, игра встанет.
📍 Навигация: Вакансии • Задачи • Собесы
#лучшее_из_библиотеки_2025
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9