Волны ИИ
Открыть в Telegram
6 696
Подписчики
Нет данных24 часа
-137 дней
-4330 дней
Архив постов
6 696
👀 C# 13 может скоро получить новую фичу, которая позволит использовать
ref и unsafe в итераторах и асинхронных методах.
📌 Мотивация
В современном мире вы не можете сделать так:
async Task MyMethodAsync()
{
await AnAsyncMethod();
ref int x = ref GetRef();
DoSomething(ref x);
await AnohterAsnycMethod();
}
Проблема с await и ref заключается в том, что компилятор не может гарантировать, что ссылка все еще будет действительна после выполнения await. Но в данном случае это не должно быть проблемой, так как x используется только между двумя вызовами await, где ссылка все еще действительна.
То же самое относится к ref структурам, таким как Span<T> или ReadOnlySpan<T>. Их нельзя использовать в итераторах (yield) или асинхронных методах.
Предложение как раз и позволит это делать:
async Task MyMethodAsync()
{
var result = await AnAsyncMethod();
ReadOnlySpan<char> span = result.AsSpan();
DoSomething(span);
await AnohterAsnycMethod();
}
#proposal