#Собес #CSharp
🤔 Что такое LINQ в С#?
LINQ (Language Integrated Query) - это встроенный в С# инструмент для удобного запроса данных. Он позволяет работать с коллекциями, базами данных, XML и другими источниками с использованием SQL-подобного синтаксиса.
👉 Новости 👉 База вопросов
LINQ (Language Integrated Query) - это встроенный в С# инструмент для удобного запроса данных. Он позволяет работать с коллекциями, базами данных, XML и другими источниками с использованием SQL-подобного синтаксиса.
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😎 Как проверить, что список не
Существует несколько способов это сделать:
🟠 Классический способ
🟠 Способ с
🟠 Способ с
🟠 Способ с
👉 Новости 👉 База вопросов
null и содержит элементы?Существует несколько способов это сделать:
List.CountEnumerable.Anypattern matchingPlease open Telegram to view this post
VIEW IN TELEGRAM
❤4
#полезное
😊 5 причин, почему простые extension-методы в C# чаще всего лучше AutoMapper
🟠 Простота
Пишешь только то, что нужно и ничего лишнего. Extension-методы дают точное управление маппингом без лишней конфигурации
🟠 Производительность
Без рефлексии и скрытых накладных расходов. Прямой маппинг работает быстрее и экономит ценные миллисекунды на рантайме
🟠 Читаемость
Код должен рассказывать историю. Когда другой разработчик читает маппинг, extension-метод чаще всего более прозрачен
🟠 Гибкость
Это твой код. Можно легко адаптировать логику под конкретные кейсы, не упираясь в ограничения сторонней библиотеки.
🟠 Отладка
Можно спокойно зайти в свой маппинг-код и сразу увидеть, что и как работает. Без необходимости лезть в внутренности AutoMapper
Простота, производительность и контроль — часто выигрывают, особенно когда пишешь чистую и поддерживаемую архитектуру
👉 Новости 👉 База вопросов
Пишешь только то, что нужно и ничего лишнего. Extension-методы дают точное управление маппингом без лишней конфигурации
Без рефлексии и скрытых накладных расходов. Прямой маппинг работает быстрее и экономит ценные миллисекунды на рантайме
Код должен рассказывать историю. Когда другой разработчик читает маппинг, extension-метод чаще всего более прозрачен
Это твой код. Можно легко адаптировать логику под конкретные кейсы, не упираясь в ограничения сторонней библиотеки.
Можно спокойно зайти в свой маппинг-код и сразу увидеть, что и как работает. Без необходимости лезть в внутренности AutoMapper
Простота, производительность и контроль — часто выигрывают, особенно когда пишешь чистую и поддерживаемую архитектуру
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
#полезное
👍 В .NET 9 представлено новое поведение
Теперь GUID стал последовательным, что делает его более подходящим для реляционных баз данных
Также добавлено свойство
👉 Новости 👉 База вопросов
GUID, основанное на метке времени и случайностиТеперь GUID стал последовательным, что делает его более подходящим для реляционных баз данных
Также добавлено свойство
Version, позволяющее определить версию созданного GUIDPlease open Telegram to view this post
VIEW IN TELEGRAM
👍1
#Собес #CSharp
🤔 Что такое многопоточное программирование в .NET?
Многопоточное программирование (multithreading) позволяет одной программе выполнять несколько задач параллельно с использованием потоков (threads). B .NET потоки управляются с помощью
👉 Новости 👉 База вопросов
Многопоточное программирование (multithreading) позволяет одной программе выполнять несколько задач параллельно с использованием потоков (threads). B .NET потоки управляются с помощью
Thread, Task и async/await. Это увеличивает производительность за счёт эффективного использования процессорных ресурсов и выполнения задач в фоне.Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
#полезное
👨💻 Совет по C#
Используй метод
👉 Новости 👉 База вопросов
Используй метод
string.Join, чтобы объединить элементы коллекции в одну строку, вставляя указанный разделитель между элементами.Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍1
image_2025-04-11_11-04-44.png
1.2 MB
#полезное
🤓 Краткая история языка C#
Microsoft выпустила C# 13 в ноябре прошлого года. За более чем 20 лет C# развивался через 13 версий, каждая из которых привносила новые возможности.
Вот краткий обзор этих функций:
👉 Новости 👉 База вопросов
Microsoft выпустила C# 13 в ноябре прошлого года. За более чем 20 лет C# развивался через 13 версий, каждая из которых привносила новые возможности.
Вот краткий обзор этих функций:
⏩ C# 1.0 (.NET 1.0, 2002): Первый релиз⏩ C# 1.2 (.NET 1.1, 2003): IDisposable для IEnumerators⏩ C# 2.0 (.NET 2.0, 2005): Обобщения, nullable-типы, итераторы⏩ C# 3.0 (.NET 3.5, 2007): Лямбда-выражения, LINQ, методы расширения⏩ C# 4.0 (.NET 4, 2010): Динамическое связывание, именованные аргументы, необязательные параметры⏩ C# 5.0 (.NET 4.5, 2012): Async/await, атрибуты информации о вызывающем⏩ C# 6.0 (.NET 4.6, 2015): Инициализаторы автосвойств, статические импорты, фильтры исключений⏩ C# 7.0 (.NET 4.7, 2017): Кортежи, сопоставление с образцом, ref-переменные и возвращаемые значения⏩ C# 7.1 (2017): Async main, вывод кортежей, выражения по умолчанию⏩ C# 7.2 (2017): Модификатор доступа private protected, Span<T>⏩ C# 7.3 (2018): Новые ограничения для обобщений, переназначение ref⏩ C# 8.0 (.NET Core 3.0, 2019): Nullable-ссылочные типы, индексы и диапазоны, using-объявления⏩ C# 9.0 (.NET 5.0, 2020): Records, свойства init, верхнеуровневые программы⏩ C# 10.0 (.NET 6.0, 2021): Record-структуры, глобальные using-и, пространства имён в файлах⏩ C# 11.0 (.NET 7.0, 2022): Обобщённая математика, обязательные члены, необработанные строковые литералы⏩ C# 12.0 (.NET 8.0, 2023): Выражения коллекций, первичные конструкторы⏩ C# 13.0 (.NET 9.0, 2024): Улучшенные параметры, частичные свойства, новый объект блокировки
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤1
#полезное
😇 Что такое преобразование клеймов (Claims Transformation) в
Если
Преобразование клеймов позволяет изменить клеймы до того, как приложение начнёт использовать их для авторизации
С помощью этого механизма можно, например, добавить недостающие клеймы из базы данных или другого источника.
Почему это полезно —> читайте здесь: статья
👉 Новости 👉 База вопросов
ASP.NET Core?Если
access token от вашего провайдера идентификации (Identity Provider) не полностью соответствует внутренним требованиям авторизации вашего приложения, вы можете использовать преобразование клеймов.Преобразование клеймов позволяет изменить клеймы до того, как приложение начнёт использовать их для авторизации
С помощью этого механизма можно, например, добавить недостающие клеймы из базы данных или другого источника.
Почему это полезно —> читайте здесь: статья
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#Собес #CSharp
🤔 Что такое управляемый (Managed) и неуправляемый (Unmanaged) код в С#?
Управляемый код работает в среде CLR и использует автоматическое управление памятью, в том числе сборку мусора. Неуправляемый код работает напрямую с операционной системой и требует ручного управления памятью.
👉 Новости 👉 База вопросов
Управляемый код работает в среде CLR и использует автоматическое управление памятью, в том числе сборку мусора. Неуправляемый код работает напрямую с операционной системой и требует ручного управления памятью.
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😴 Wait4X — это высокоэффективный инструмент без внешних зависимостей, который обеспечивает ожидание готовности сервисов перед продолжением работы.
🟠 Поддержка различных протоколов и сервисов: делает его незаменимым для:
CI/CD конвейеров: гарантирует, что все зависимости доступны перед запуском тестов.
Оркестрации контейнеров: проверяет работоспособность служб перед стартом приложения.
Процессов развертывания: удостоверяется в готовности системы до начала деплоя.
Инициализации приложения: проверяет доступность внешних сервисов.
Локальной разработки: упрощает контроль готовности локального хоста.
🟠 Основные возможности:
Поддержка нескольких протоколов: TCP, HTTP, DNS.
Интеграция с сервисами: Redis, MySQL, PostgreSQL, MongoDB, RabbitMQ, InfluxDB, Temporal.
Обратная проверка для выявления свободных портов или неготовых служб.
Параллельная проверка нескольких сервисов одновременно.
Экспоненциальное повторение попыток с увеличивающимися задержками для повышения надежности.
Интеграция с CI/CD для автоматизации рабочих процессов.
Кроссплатформенность: единый двоичный файл для Linux, macOS и Windows.
Импорт пакетов Go в приложения на Go.
Выполнение команд после успешного прохождения проверок.
Больше на Гитхаб
👉 Новости 👉 База вопросов
CI/CD конвейеров: гарантирует, что все зависимости доступны перед запуском тестов.
Оркестрации контейнеров: проверяет работоспособность служб перед стартом приложения.
Процессов развертывания: удостоверяется в готовности системы до начала деплоя.
Инициализации приложения: проверяет доступность внешних сервисов.
Локальной разработки: упрощает контроль готовности локального хоста.
Поддержка нескольких протоколов: TCP, HTTP, DNS.
Интеграция с сервисами: Redis, MySQL, PostgreSQL, MongoDB, RabbitMQ, InfluxDB, Temporal.
Обратная проверка для выявления свободных портов или неготовых служб.
Параллельная проверка нескольких сервисов одновременно.
Экспоненциальное повторение попыток с увеличивающимися задержками для повышения надежности.
Интеграция с CI/CD для автоматизации рабочих процессов.
Кроссплатформенность: единый двоичный файл для Linux, macOS и Windows.
Импорт пакетов Go в приложения на Go.
Выполнение команд после успешного прохождения проверок.
Больше на Гитхаб
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
📞 Если вы ещё не включили
Эта опция позволяет сериализатору учитывать обязательные параметры конструктора при десериализации.
Если какой-то required-параметр отсутствует в JSON —
Больше никаких тихих багов из-за значений по умолчанию
👉 Новости 👉 База вопросов
RespectRequiredConstructorParameters в System.Text.Json 9 — самое время это сделатьЭта опция позволяет сериализатору учитывать обязательные параметры конструктора при десериализации.
Если какой-то required-параметр отсутствует в JSON —
JsonException тут как тутБольше никаких тихих багов из-за значений по умолчанию
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🛞 Google представил OSV-Scanner v2
Новая версия OSV-Scanner значительно расширяет возможности для разработчиков:
🟠 Теперь сканируются проекты на .NET, Python, Java, JS, Go, Haskell — включая такие форматы, как deps.json, uv.lock, bun.lock, Uber Jars и др.
🟠 Сводка по уязвимостям с фильтрами по критичности, пакетам, слоям в виде интерактивного HTML-отчёта
🟠 Если вы используете Java с Maven, инструмент подскажет, как безопасно обновить уязвимые зависимости с минимальными рисками.
🟠 Анализ образов Debian, Ubuntu и Alpine с определением уязвимых пакетов, историей слоев, идентификацией базового образа и фильтрацией ложных срабатываний
Релиз
👉 Новости 👉 База вопросов
Новая версия OSV-Scanner значительно расширяет возможности для разработчиков:
Релиз
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1
#Собес #CSharp
🤔 Что такое рефлексия (Reflection) в С#?
Рефлексия в С# — это процесс получения информации о типах, методах, свойствах и других элементах программы во время выполнения. Для этого используется пространство имен
👉 Новости 👉 База вопросов
Рефлексия в С# — это процесс получения информации о типах, методах, свойствах и других элементах программы во время выполнения. Для этого используется пространство имен
System. Reflection.Please open Telegram to view this post
VIEW IN TELEGRAM
#ЛитКод
Задача: 503. Next Greater Element II
Дан циклический массив целых чисел nums (т.е. следующий элемент после nums[nums.length - 1] это nums[0]), верните следующее большее число для каждого элемента в nums.
Следующее большее число для числа x — это первое большее число, следующее за ним в порядке обхода массива, что означает, что вы можете искать циклически, чтобы найти следующее большее число. Если оно не существует, верните -1 для этого числа.
Пример:
👨💻 Алгоритм:
1⃣ Инициализация
Создайте массив res той же длины, что и nums, и заполните его значениями -1.
2⃣ Поиск следующего большего элемента
Для каждого элемента nums[i], используя индекс j, ищите следующий больший элемент среди следующих (циклически) n-1 элементов. Если найден больший элемент, обновите res[i] и прервите внутренний цикл.
3⃣ Возврат результата
Верните массив res.
😎 Решение:
👉 Новости 👉 База вопросов
Задача: 503. Next Greater Element II
Дан циклический массив целых чисел nums (т.е. следующий элемент после nums[nums.length - 1] это nums[0]), верните следующее большее число для каждого элемента в nums.
Следующее большее число для числа x — это первое большее число, следующее за ним в порядке обхода массива, что означает, что вы можете искать циклически, чтобы найти следующее большее число. Если оно не существует, верните -1 для этого числа.
Пример:
Input: nums = [1,2,1]
Output: [2,-1,2]
Explanation: The first 1's next greater number is 2;
The number 2 can't find next greater number.
The second 1's next greater number needs to search circularly, which is also 2.
Создайте массив res той же длины, что и nums, и заполните его значениями -1.
Для каждого элемента nums[i], используя индекс j, ищите следующий больший элемент среди следующих (циклически) n-1 элементов. Если найден больший элемент, обновите res[i] и прервите внутренний цикл.
Верните массив res.
public class Solution {
public int[] NextGreaterElements(int[] nums) {
int n = nums.Length;
int[] res = new int[n];
Array.Fill(res, -1);
for (int i = 0; i < n; i++) {
for (int j = 1; j < n; j++) {
if (nums[(i + j) % n] > nums[i]) {
res[i] = nums[(i + j) % n];
break;
}
}
}
return res;
}
}Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🤓 OpenAI выпустила Codex CLI — опенсорс агента ИИ
Лицензия Apache 2.0. Легко запускается локально и превращает командную строку в среду программирования на естественном языке.
👉 Новости 👉 База вопросов
Лицензия Apache 2.0. Легко запускается локально и превращает командную строку в среду программирования на естественном языке.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
#Собес #CSharp
🤔 Какие существуют способы перегрузки методов в С#?
Перегрузка методов в С# позволяет создавать несколько методов с одинаковыми именами, но с различными параметрами. Методы могут отличаться по числу параметров, их порядку или типам данных
👉 Новости 👉 База вопросов
Перегрузка методов в С# позволяет создавать несколько методов с одинаковыми именами, но с различными параметрами. Методы могут отличаться по числу параметров, их порядку или типам данных
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😊 Версионирование API в .NET 9
В .NET 9 ты можешь гибко управлять версиями API — хоть в контроллерах, хоть в минималках:
🟠 URL-версионирование —
🟠 Query string —
🟠 Заголовок HTTP —
🟠 Тип медиа —
Подключи нужные пакеты:
Поддержка версионирования:
🟠 В контроллерах
🟠 В минимальных API
Старые версии можно объявить устаревшими.
👉 Новости 👉 База вопросов
В .NET 9 ты можешь гибко управлять версиями API — хоть в контроллерах, хоть в минималках:
/api/v1/orders, /api/v2/orders/api/orders?api-version=1 X-Api-Version: 1application/vnd.myapi.v1+json
Подключи нужные пакеты:
Asp.Versioning.Http
Asp.Versioning.Mvc
Asp.Versioning.Mvc.ApiExplorer
Поддержка версионирования:
Старые версии можно объявить устаревшими.
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😬 Новинка: Incrementalist 1.0 — инструмент инкрементальной сборки для .NET, который использует git diff (через libgit2sharp) и Roslyn для анализа изменений и зависимостей в коде, чтобы значительно сократить время сборки и тестирования в больших .NET-решениях и монорепозиториях.
Хотя его использовали и раньше, но только сейчас инструмент получил полноценный интерфейс командной строки
👉 Новости 👉 База вопросов
Хотя его использовали и раньше, но только сейчас инструмент получил полноценный интерфейс командной строки
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#полезное
😐 Как использовать
Тык сюда
👉 Новости 👉 База вопросов
Spectre.Console в ASP.NET Core для выделения важных разделов в консолиТык сюда
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#Собес #CSharp
🤔 В чем разница между поздним связыванием (late binding) и ранним связыванием (early binding) в С#?
Раннее связывание происходит на этапе компиляции, когда типы объектов и их методы известны, что делает выполнение быстрее. Позднее связывание происходит на этапе выполнения, когда типы объектов определяются динамически, что может замедлить выполнение.
👉 Новости 👉 База вопросов
Раннее связывание происходит на этапе компиляции, когда типы объектов и их методы известны, что делает выполнение быстрее. Позднее связывание происходит на этапе выполнения, когда типы объектов определяются динамически, что может замедлить выполнение.
Please open Telegram to view this post
VIEW IN TELEGRAM