📹 Посмотрел недавно на все том же славном канале Ника Чапсаса видос про Span<T>. Рекламируется, как штука, которая позволяет избавиться от лишних упаковок при нарезке массивов. Примерно так:
1️⃣ Вот в этом примере есть упаковка при создании строки dayAsText:
string _dateAsText = "08 07 2021";
string dayAsText = _dateAsText.Substring(0, 2);
2️⃣А вот в этом примере при создании dayAsSpan аллокации нет:
ReadOnlySpan<char> dateAsSpan = "08 07 2021";
ReadOnlySpan<char> dayAsSpan = dateAsSpan.Slice(0, 2);
Потому что dayAsSpan просто ссылается на кусочек памяти, размещенный в dateAsSpan.
Я всегда пытаюсь приложить новые знания на практику web-разработки, и в этом случае, как вы понимаете тоже попытался сделать также, но… Потерпел фиаско, как известный в широких кругах пёс.
Долго пытался понять, что можно сделать. Может как-то в контроллерах там можно сэкономить, или в сервисах, которые обрабатывают батчами информацию. Но, нет.
В итоге пришел к выводу, что в web-разработке вам эта штука вряд ли пригодится, хотя бы потому, что у нее есть ограничение на использование только в синхронных методах.
🅰️ Так что, на вопрос в заголовке можно уверенно ответить: для web-разрабочтиков не через Span. Но вот в каких-нибудь библиотечных историях, вещь хорошая. А, ну и на собесах (ебучих) теперь вы можете ответить на какие-нибудь каверзные вопросы про этот Span.