Почему Span<T>/ReadOnlySpan<T> — это ref struct, что это запрещает (heap/async/итераторы/лямбды), и как передавать “срезы” через async-границы?
ref struct → только стек: нельзя боксить, хранить в полях классов, захватывать в замыканиях, использовать в async/итераторах — их состояния живут в куче, что небезопасно для byref-типов. Используйте Span<T> локально и синхронно; создавайте через stackalloc, слайсинг O(1). Для перехода через async/долгоживущего хранения берите Memory<T>/ReadOnlyMemory<T>; по месту обратно получайте .Span. Нельзя возвращать/принимать Task<Span<T>>; нужно Task<Memory<T>>.
Почему Span<T>/ReadOnlySpan<T> — это ref struct, что это запрещает (heap/async/итераторы/лямбды), и как передавать “срезы” через async-границы?
ref struct → только стек: нельзя боксить, хранить в полях классов, захватывать в замыканиях, использовать в async/итераторах — их состояния живут в куче, что небезопасно для byref-типов. Используйте Span<T> локально и синхронно; создавайте через stackalloc, слайсинг O(1). Для перехода через async/долгоживущего хранения берите Memory<T>/ReadOnlyMemory<T>; по месту обратно получайте .Span. Нельзя возвращать/принимать Task<Span<T>>; нужно Task<Memory<T>>.
Don’t publish new content at nighttime. Since not all users disable notifications for the night, you risk inadvertently disturbing them. Ng Man-ho, a 27-year-old computer technician, was convicted last month of seven counts of incitement charges after he made use of the 100,000-member Chinese-language channel that he runs and manages to post "seditious messages," which had been shut down since August 2020. Telegram channels fall into two types: 3How to create a Telegram channel? How to create a business channel on Telegram? (Tutorial)
from us