Волны ИИ
Kanalga Telegram’da o‘tish
Творчество искусственного интеллекта.
Ko'proq ko'rsatish6 696
Obunachilar
Ma'lumot yo'q24 soatlar
-137 kun
-4330 kun
Postlar arxiv
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