Rate Limiting в ASP.NET Core: одного middleware недостаточно
Ограничение частоты запросов помогает защитить API от перебора паролей, злоупотребления запросами, резких скачков трафика и чрезмерного потребления ресурсов.
Но полагаться только на middleware внутри приложения — ошибка. Защищать нужно всю цепочку обработки запросов:
CDN и защита от DDoS → WAF → API Gateway → .NET API → внутренние сервисы
Каждый уровень решает свои задачи: от фильтрации вредоносного трафика до ограничения нагрузки на приложение и зависимые сервисы.
Надёжная защита API — это не одна настройка, а многоуровневый подход.
👉 @KodBlog
Ограничение частоты запросов помогает защитить API от перебора паролей, злоупотребления запросами, резких скачков трафика и чрезмерного потребления ресурсов.
Но полагаться только на middleware внутри приложения — ошибка. Защищать нужно всю цепочку обработки запросов:
CDN и защита от DDoS → WAF → API Gateway → .NET API → внутренние сервисы
Каждый уровень решает свои задачи: от фильтрации вредоносного трафика до ограничения нагрузки на приложение и зависимые сервисы.
Надёжная защита API — это не одна настройка, а многоуровневый подход.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2🍾1
Таймаут в ASP.NET Core не гарантирует остановку выполнения
Middleware для ограничения времени выполнения в ASP.NET Core отменяет токен отмены (
Чтобы таймаут действительно помогал, токен должен передаваться по всей цепочке вызовов: от endpoint через сервисы до EF Core или
В примере из статьи для endpoint установлен лимит в 3 секунды. Но если внутри него выполняется десятисекундная задержка, которая игнорирует токен отмены, обработка может продолжиться и завершиться ответом
Проверить поведение можно в двух сценариях: когда операция корректно реагирует на отмену и когда игнорирует её. Тестировать нужно без подключённого отладчика — в описанном примере таймаут не срабатывает под отладчиком.
Разбор настройки таймаутов и обработки отмены в ASP.NET Core
👉 @KodBlog
Middleware для ограничения времени выполнения в ASP.NET Core отменяет токен отмены (
CancellationToken), но не останавливает поток принудительно и не заставляет endpoint немедленно вернуть ответ.Чтобы таймаут действительно помогал, токен должен передаваться по всей цепочке вызовов: от endpoint через сервисы до EF Core или
HttpClient. При этом вызываемый код тоже должен поддерживать отмену.В примере из статьи для endpoint установлен лимит в 3 секунды. Но если внутри него выполняется десятисекундная задержка, которая игнорирует токен отмены, обработка может продолжиться и завершиться ответом
200 OK.Проверить поведение можно в двух сценариях: когда операция корректно реагирует на отмену и когда игнорирует её. Тестировать нужно без подключённого отладчика — в описанном примере таймаут не срабатывает под отладчиком.
Разбор настройки таймаутов и обработки отмены в ASP.NET Core
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2🍾1
7 архитектур .NET, которые должен знать каждый разработчик в 2026 году
При разработке приложений на .NET Core архитектура — это не просто техническое решение, а долгосрочная инвестиция в масштабируемость, удобство поддержки и продуктивность команды.
Разберём основные архитектурные подходы и случаи, когда их стоит использовать.
Монолитная архитектура (Monolithic Architecture). Подходит для небольших приложений, MVP и проектов с простой предметной областью. Такие приложения быстро разрабатывать, но их масштабирование со временем может стать сложнее.
Многоуровневая архитектура (N-Tier Architecture). Классический подход с чётким разделением ответственности между уровнями. Идеально подходит для корпоративных приложений, хотя компоненты всё ещё могут оставаться тесно связанными.
Чистая архитектура (Clean Architecture). Предполагает независимость бизнес-логики от фреймворков и пользовательского интерфейса. Отлично подходит для систем, которые должны оставаться удобными в поддержке и тестировании в долгосрочной перспективе.
Архитектура вертикальных срезов (Vertical Slice Architecture). Организует код по функциональным возможностям, а не по слоям. Хорошо подходит для гибких команд и позволяет быстрее разрабатывать новые функции.
Микросервисная архитектура (Microservices Architecture). Подходит для крупных систем, которым необходимы независимое развёртывание компонентов и высокая масштабируемость. Однако такой подход усложняет эксплуатацию и поддержку инфраструктуры.
CQRS (Command Query Responsibility Segregation). Разделяет операции чтения и записи данных. Особенно полезен для высоконагруженных систем и приложений со сложной бизнес-логикой.
Событийно-ориентированная архитектура (Event-Driven Architecture). Обеспечивает слабую связанность компонентов и обработку событий в реальном времени. Подходит для распределённых систем и интеграции различных сервисов.
Главное: универсальной архитектуры не существует. Правильный выбор зависит от масштаба проекта, структуры команды, требований к масштабируемости и долгосрочных целей развития приложения.
👉 @KodBlog
При разработке приложений на .NET Core архитектура — это не просто техническое решение, а долгосрочная инвестиция в масштабируемость, удобство поддержки и продуктивность команды.
Разберём основные архитектурные подходы и случаи, когда их стоит использовать.
Монолитная архитектура (Monolithic Architecture). Подходит для небольших приложений, MVP и проектов с простой предметной областью. Такие приложения быстро разрабатывать, но их масштабирование со временем может стать сложнее.
Многоуровневая архитектура (N-Tier Architecture). Классический подход с чётким разделением ответственности между уровнями. Идеально подходит для корпоративных приложений, хотя компоненты всё ещё могут оставаться тесно связанными.
Чистая архитектура (Clean Architecture). Предполагает независимость бизнес-логики от фреймворков и пользовательского интерфейса. Отлично подходит для систем, которые должны оставаться удобными в поддержке и тестировании в долгосрочной перспективе.
Архитектура вертикальных срезов (Vertical Slice Architecture). Организует код по функциональным возможностям, а не по слоям. Хорошо подходит для гибких команд и позволяет быстрее разрабатывать новые функции.
Микросервисная архитектура (Microservices Architecture). Подходит для крупных систем, которым необходимы независимое развёртывание компонентов и высокая масштабируемость. Однако такой подход усложняет эксплуатацию и поддержку инфраструктуры.
CQRS (Command Query Responsibility Segregation). Разделяет операции чтения и записи данных. Особенно полезен для высоконагруженных систем и приложений со сложной бизнес-логикой.
Событийно-ориентированная архитектура (Event-Driven Architecture). Обеспечивает слабую связанность компонентов и обработку событий в реальном времени. Подходит для распределённых систем и интеграции различных сервисов.
Главное: универсальной архитектуры не существует. Правильный выбор зависит от масштаба проекта, структуры команды, требований к масштабируемости и долгосрочных целей развития приложения.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7🍾1
Обрати внимание, где именно расположен
СПОЙЛЕР: Оба варианта генерируют практически одинаковый SQL-запрос (за исключением того, что в правом варианте столбец не выбирается).
Однако мне больше нравится правый вариант, где стоит перед , — с точки зрения стиля и читаемости кода.
👉 @KodBlog
ToList() в этом посте про Entity Framework, который я сегодня увидел в LinkedIn.CityОднако мне больше нравится правый вариант, где
WhereSelectPlease open Telegram to view this post
VIEW IN TELEGRAM
1👎6❤🔥3🍾3👍2
Clean Architecture нужна не каждому .NET-проекту
При разработке на ASP.NET Core легко увлечься архитектурой и создать несколько слоёв абстракций даже для простых функций. Но иногда Vertical Slice Architecture (VSA) позволяет писать код проще и быстрее.
Вместо разделения приложения на слои VSA группирует код по функциям и сценариям: например,
В чём преимущества VSA?
— Меньше лишних абстракций и шаблонного кода.
— Изменения одной функции реже затрагивают остальные.
— Проще ориентироваться в коде и добавлять новые возможности.
— Не нужно создавать интерфейс и репозиторий для каждой операции, если они не приносят реальной пользы.
Это не значит, что Clean Architecture устарела. Она по-прежнему отлично подходит проектам со сложной бизнес-логикой и строгими архитектурными границами.
Практичный подход — начать с Vertical Slice Architecture и добавлять слои и абстракции по мере необходимости. При этом важно следить, чтобы логика не дублировалась между слайсами.
👉 @KodBlog
При разработке на ASP.NET Core легко увлечься архитектурой и создать несколько слоёв абстракций даже для простых функций. Но иногда Vertical Slice Architecture (VSA) позволяет писать код проще и быстрее.
Вместо разделения приложения на слои VSA группирует код по функциям и сценариям: например,
CreateOrder, GetOrder и CancelOrder. Внутри каждого слайса находятся необходимые обработчики, валидация, модели запросов и ответов.В чём преимущества VSA?
— Меньше лишних абстракций и шаблонного кода.
— Изменения одной функции реже затрагивают остальные.
— Проще ориентироваться в коде и добавлять новые возможности.
— Не нужно создавать интерфейс и репозиторий для каждой операции, если они не приносят реальной пользы.
Это не значит, что Clean Architecture устарела. Она по-прежнему отлично подходит проектам со сложной бизнес-логикой и строгими архитектурными границами.
Практичный подход — начать с Vertical Slice Architecture и добавлять слои и абстракции по мере необходимости. При этом важно следить, чтобы логика не дублировалась между слайсами.
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍8🍾1
HTTPS-редиректа недостаточно для защиты приложения ASP.NET Core
Многие разработчики включают
Разберёмся, как они работают вместе.
1. HTTPS-редирект:
Автоматически перенаправляет входящие HTTP-запросы на HTTPS. Например:
Однако первый HTTP-запрос всё ещё может передаваться по незащищённому соединению до выполнения перенаправления.
2. HSTS:
• Автоматически переключает последующие HTTP-запросы на HTTPS.
• Не позволяет пользователю обойти предупреждение о недействительном сертификате.
• Помогает защититься от атак, связанных с понижением версии протокола.
3. Настройка обоих механизмов в ASP.NET Core
Здесь HSTS действует в течение одного года, а директива
Важно: включайте
4. Что учитывать в production
• Обратные прокси. Если используются AWS ALB, Nginx или другой reverse proxy, завершение HTTPS-соединения и перенаправление могут выполняться на уровне инфраструктуры.
• Forwarded-заголовки. При необходимости настройте
• Web API. HSTS применяется преимущественно браузерами. Для API, которыми пользуются мобильные приложения и другие клиенты, необходимо обеспечивать HTTPS на уровне сервера или инфраструктуры, а не полагаться на редиректы.
• HSTS Preload. Рассматривайте предварительное включение домена в список HSTS только тогда, когда весь домен и все его поддомены постоянно готовы работать через HTTPS.
Рекомендация: обеспечивайте принудительное использование HTTPS на границе инфраструктуры, а для приложений, доступных через браузер, дополнительно используйте HSTS. Важно, чтобы оба механизма были настроены согласованно.
👉 @KodBlog
Многие разработчики включают
UseHttpsRedirection() и считают, что приложение защищено. Но есть ещё один важный механизм безопасности, о котором не стоит забывать, — HTTP Strict Transport Security (HSTS).Разберёмся, как они работают вместе.
1. HTTPS-редирект:
UseHttpsRedirection()Автоматически перенаправляет входящие HTTP-запросы на HTTPS. Например:
http://example.com → https://example.comОднако первый HTTP-запрос всё ещё может передаваться по незащищённому соединению до выполнения перенаправления.
2. HSTS:
UseHsts(). HSTS указывает браузеру использовать для домена только HTTPS. Получив заголовок HSTS по защищённому соединению, браузер:• Автоматически переключает последующие HTTP-запросы на HTTPS.
• Не позволяет пользователю обойти предупреждение о недействительном сертификате.
• Помогает защититься от атак, связанных с понижением версии протокола.
3. Настройка обоих механизмов в ASP.NET Core
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddHsts(options =>
{
options.MaxAge = TimeSpan.FromDays(365);
options.IncludeSubDomains = true;
});
var app = builder.Build();
if (!app.Environment.IsDevelopment())
{
app.UseHsts();
}
app.UseHttpsRedirection();
app.MapGet("/", () => "Secure API");
app.Run();
Здесь HSTS действует в течение одного года, а директива
IncludeSubDomains распространяет его действие на поддомены.Важно: включайте
IncludeSubDomains, только если все поддомены поддерживают HTTPS.4. Что учитывать в production
• Обратные прокси. Если используются AWS ALB, Nginx или другой reverse proxy, завершение HTTPS-соединения и перенаправление могут выполняться на уровне инфраструктуры.
• Forwarded-заголовки. При необходимости настройте
UseForwardedHeaders() для доверенных прокси до UseHttpsRedirection(). Иначе приложение может неправильно определять схему запроса и создавать циклы перенаправлений.• Web API. HSTS применяется преимущественно браузерами. Для API, которыми пользуются мобильные приложения и другие клиенты, необходимо обеспечивать HTTPS на уровне сервера или инфраструктуры, а не полагаться на редиректы.
• HSTS Preload. Рассматривайте предварительное включение домена в список HSTS только тогда, когда весь домен и все его поддомены постоянно готовы работать через HTTPS.
Рекомендация: обеспечивайте принудительное использование HTTPS на границе инфраструктуры, а для приложений, доступных через браузер, дополнительно используйте HSTS. Важно, чтобы оба механизма были настроены согласованно.
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤2🍾1
10 причин, почему macOS лучше Windows для .NET-разработчиков
Visual Studio работает только на Windows. И всё же для большинства .NET-разработчиков macOS может оказаться более удобной рабочей машиной.
Автор больше 13 лет разрабатывает приложения на .NET и на Windows, и на Mac. Вот его сравнение обеих платформ. 10 причин выбрать macOS
1. Unix-подобная система. Пути к файлам, права доступа и shell-скрипты работают ближе к тому, как они устроены на Linux-серверах и в контейнерах, куда вы деплоите приложения.
2. Более удобная работа с Docker. Linux-контейнеры запускаются без типичных проблем WSL, таких как чрезмерное потребление памяти, сетевые сбои и проблемы с синхронизацией файлов.
3. Производительность Apple Silicon. .NET работает нативно на ARM64. Чипы серии M быстро собирают большие проекты и при этом почти не шумят.
4. Автономность на весь день. Можно компилировать код, отлаживать приложения и запускать контейнеры в течение рабочего дня без зарядки.
5. Отличные IDE. JetBrains Rider и VS Code с ReSharper или C# Dev Kit работают на macOS нативно и предоставляют полноценные возможности для разработки.
6. Homebrew. Одна команда позволяет установить .NET SDK, Node.js, базы данных и CLI-инструменты, а затем обновлять их.
7. Качество оборудования. Чёткий экран, удобный трекпад и корректно работающий спящий режим.
8. Безопасность из коробки. macOS обеспечивает высокий уровень безопасности, а приложения должны запрашивать необходимые разрешения на доступ к системным ресурсам.
9. Чистая система. Меньше предустановленного ПО и никакой рекламы в системном интерфейсе.
10. Все цели для .NET MAUI на одном устройстве. Для сборки и подписания приложений под iOS и macOS нужен Mac. На нём можно разрабатывать приложения для Android, iOS и macOS в одном окружении.
5 причин выбрать Windows
1. Полноценная Visual Studio. Расширенные инструменты отладки, визуальные дизайнеры и профилировщики. Visual Studio for Mac закрыли в 2024 году. Если вы привыкли к Visual Studio и не хотите переходить на Rider или VS Code, Windows остаётся основным вариантом.
2. Разработка десктопных приложений. WPF, Windows Forms и WinUI предназначены для Windows и требуют Windows для полноценного запуска и отладки.
3. Старые проекты на .NET Framework. Устаревшие приложения на .NET Framework и ASP.NET могут требовать Windows, особенно если используют специфичные для этой платформы технологии.
4. SQL Server и SSMS. Оба инструмента нативно работают на Windows. На Mac SQL Server можно запустить в Docker, а SQL Server Management Studio (SSMS) не поддерживается нативно.
5. Цена и выбор оборудования. Больше производителей, возможность самостоятельно обновлять оперативную память и накопители, а также более высокая производительность за те же деньги у многих конфигураций.
Большинство новых .NET-приложений работают в Linux-контейнерах. Поэтому Unix-подобная система на ноутбуке может быть ближе к продакшен-окружению, чем Windows.
→ macOS — веб-разработка, облачные сервисы и мобильные приложения.
→ Windows — десктопные приложения и поддержка старых проектов на .NET Framework.
А на чём вы разрабатываете на .NET: macOS, Windows или Linux?
👉 @KodBlog
Visual Studio работает только на Windows. И всё же для большинства .NET-разработчиков macOS может оказаться более удобной рабочей машиной.
Автор больше 13 лет разрабатывает приложения на .NET и на Windows, и на Mac. Вот его сравнение обеих платформ. 10 причин выбрать macOS
1. Unix-подобная система. Пути к файлам, права доступа и shell-скрипты работают ближе к тому, как они устроены на Linux-серверах и в контейнерах, куда вы деплоите приложения.
2. Более удобная работа с Docker. Linux-контейнеры запускаются без типичных проблем WSL, таких как чрезмерное потребление памяти, сетевые сбои и проблемы с синхронизацией файлов.
3. Производительность Apple Silicon. .NET работает нативно на ARM64. Чипы серии M быстро собирают большие проекты и при этом почти не шумят.
4. Автономность на весь день. Можно компилировать код, отлаживать приложения и запускать контейнеры в течение рабочего дня без зарядки.
5. Отличные IDE. JetBrains Rider и VS Code с ReSharper или C# Dev Kit работают на macOS нативно и предоставляют полноценные возможности для разработки.
6. Homebrew. Одна команда позволяет установить .NET SDK, Node.js, базы данных и CLI-инструменты, а затем обновлять их.
7. Качество оборудования. Чёткий экран, удобный трекпад и корректно работающий спящий режим.
8. Безопасность из коробки. macOS обеспечивает высокий уровень безопасности, а приложения должны запрашивать необходимые разрешения на доступ к системным ресурсам.
9. Чистая система. Меньше предустановленного ПО и никакой рекламы в системном интерфейсе.
10. Все цели для .NET MAUI на одном устройстве. Для сборки и подписания приложений под iOS и macOS нужен Mac. На нём можно разрабатывать приложения для Android, iOS и macOS в одном окружении.
5 причин выбрать Windows
1. Полноценная Visual Studio. Расширенные инструменты отладки, визуальные дизайнеры и профилировщики. Visual Studio for Mac закрыли в 2024 году. Если вы привыкли к Visual Studio и не хотите переходить на Rider или VS Code, Windows остаётся основным вариантом.
2. Разработка десктопных приложений. WPF, Windows Forms и WinUI предназначены для Windows и требуют Windows для полноценного запуска и отладки.
3. Старые проекты на .NET Framework. Устаревшие приложения на .NET Framework и ASP.NET могут требовать Windows, особенно если используют специфичные для этой платформы технологии.
4. SQL Server и SSMS. Оба инструмента нативно работают на Windows. На Mac SQL Server можно запустить в Docker, а SQL Server Management Studio (SSMS) не поддерживается нативно.
5. Цена и выбор оборудования. Больше производителей, возможность самостоятельно обновлять оперативную память и накопители, а также более высокая производительность за те же деньги у многих конфигураций.
Большинство новых .NET-приложений работают в Linux-контейнерах. Поэтому Unix-подобная система на ноутбуке может быть ближе к продакшен-окружению, чем Windows.
→ macOS — веб-разработка, облачные сервисы и мобильные приложения.
→ Windows — десктопные приложения и поддержка старых проектов на .NET Framework.
А на чём вы разрабатываете на .NET: macOS, Windows или Linux?
Please open Telegram to view this post
VIEW IN TELEGRAM
1🥴15❤3😁1🌚1🍾1
GitHub ускоряет запись данных в репозитории в 3–4 раза
GitHub меняет механизм блокировок в Spokes: вместо одной блокировки на весь репозиторий будут использоваться отдельные блокировки для каждой ссылки на Git-объект (ref).
Это позволит обновлять разные refs параллельно, не блокируя друг друга, даже при межрегиональных задержках около 25 мс.
По результатам внутренних тестов GitHub, новый подход увеличил пропускную способность операций записи в 3–4 раза.
Главная идея — меньше лишних блокировок и больше параллелизма при работе с репозиториями.
👉 @KodBlog
GitHub меняет механизм блокировок в Spokes: вместо одной блокировки на весь репозиторий будут использоваться отдельные блокировки для каждой ссылки на Git-объект (ref).
Это позволит обновлять разные refs параллельно, не блокируя друг друга, даже при межрегиональных задержках около 25 мс.
По результатам внутренних тестов GitHub, новый подход увеличил пропускную способность операций записи в 3–4 раза.
Главная идея — меньше лишних блокировок и больше параллелизма при работе с репозиториями.
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍5🍾1
🔥 Собеседование по System Design в прямом эфире
Что будет, если два сильных разработчика встретятся на техническом собеседовании, а один из них впервые увидит задачу прямо во время эфира? ↓
Покажем 31 октября в 12:00 мск
👤 Кандидат: Сергей Чамкин
— Senior Developer в Uzum, ex-Wildberries
— 7 лет в разработке высоконагруженных систем на Java и Kotlin
— Собеседовал кандидатов для EPAM, Wildberries и RNT Group
— Провёл 300+ мок-собеседований как ментор
👤 Интервьюер: Виктор Анохин
— Ведущий разработчик банковских сервисов и системы лояльности в Wildberries, ex-Билайн
— 5+ лет опыта в enterprise: финтех, телеком, e-commerce
— Строил высоконагруженные микросервисы с нуля, от проектирования архитектуры до обеспечения 99,99% uptime
Сергей будет решать задачу без подготовки, а Виктор задавать уточняющие вопросы и проверять ход его рассуждений
После решения разберём, где даже опытный разработчик может потерять баллы и как улучшить свой подход к System Design
На эфире ты узнаешь:
🗓 Встречаемся 31 октября в 12:00 мск. Участие бесплатное!
Эфир проводит ШОРТКАТ – менторская программа для разработчиков, которые хотят сменить работу или вырасти в грейде и зарплате
📲 Переходи в бота и регистрируйся на эфир: @shortcut_csharp_bot
Реклама.
О рекламодателе.
Что будет, если два сильных разработчика встретятся на техническом собеседовании, а один из них впервые увидит задачу прямо во время эфира? ↓
Покажем 31 октября в 12:00 мск
👤 Кандидат: Сергей Чамкин
— Senior Developer в Uzum, ex-Wildberries
— 7 лет в разработке высоконагруженных систем на Java и Kotlin
— Собеседовал кандидатов для EPAM, Wildberries и RNT Group
— Провёл 300+ мок-собеседований как ментор
👤 Интервьюер: Виктор Анохин
— Ведущий разработчик банковских сервисов и системы лояльности в Wildberries, ex-Билайн
— 5+ лет опыта в enterprise: финтех, телеком, e-commerce
— Строил высоконагруженные микросервисы с нуля, от проектирования архитектуры до обеспечения 99,99% uptime
Сергей будет решать задачу без подготовки, а Виктор задавать уточняющие вопросы и проверять ход его рассуждений
После решения разберём, где даже опытный разработчик может потерять баллы и как улучшить свой подход к System Design
На эфире ты узнаешь:
✦ С чего начинать решение задачи на System Design и какие требования уточнить до проектирования
✦ На каких ошибках теряют баллы даже опытные разработчики
✦ Чем подход к System Design на уровне Middle отличается от уровня Senior
🗓 Встречаемся 31 октября в 12:00 мск. Участие бесплатное!
Эфир проводит ШОРТКАТ – менторская программа для разработчиков, которые хотят сменить работу или вырасти в грейде и зарплате
📲 Переходи в бота и регистрируйся на эфир: @shortcut_csharp_bot
Реклама.
О рекламодателе.
Оператор присваивания с проверкой на null
Оператор
Он присваивает правому операнду значение только в том случае, если левый операнд равен
Если переменная уже содержит значение, оно останется без изменений:
Оператор
👉 @KodBlog
??=Оператор
??= появился в C# 8.0 и работает по принципу оператора объединения с null ??.Он присваивает правому операнду значение только в том случае, если левый операнд равен
null.string? name = null;
name ??= "Developer";
Console.WriteLine(name); // Developer
Если переменная уже содержит значение, оно останется без изменений:
string? name = "Alex";
name ??= "Developer";
Console.WriteLine(name); // Alex
Оператор
??= позволяет сократить код и удобно задавать значения по умолчанию, если переменная ещё не инициализирована.Please open Telegram to view this post
VIEW IN TELEGRAM
🙏5❤1🔥1🍾1
Упрощаем работу с коллекциями в C# с помощью Collection Expressions
В C# 12 появились Collection Expressions — выражения коллекций, которые позволяют создавать коллекции с помощью простого и лаконичного синтаксиса
Вместо длинной записи можно использовать квадратные скобки, делая код чище и понятнее.
👉 @KodBlog
В C# 12 появились Collection Expressions — выражения коллекций, которые позволяют создавать коллекции с помощью простого и лаконичного синтаксиса
[].Вместо длинной записи можно использовать квадратные скобки, делая код чище и понятнее.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍2👎1