Compartir a través de


Error del compilador CS1983

El tipo de valor devuelto de un método asincrónico debe ser void, Task, Task<T>, un tipo similar a una tarea (un tipo similar a una tarea es uno que se adhiere al patrón descrito aquí, requerido por la especificación de C#), IAsyncEnumerable<T> o IAsyncEnumerator<T>.

Ejemplo

El ejemplo siguiente genera la advertencia CS1983:

// CS1983.cs (4,62)
using System.Collections.Generic;

class C
{
    static async IEnumerable<int> M()
    {
        yield return await Task.FromResult(1);
    }
}

Dado que IEnumerable.GetEnumerator devuelve un IEnumerator<T> cuyo método MoveNext no devuelve un valor de Task<T>, no es compatible con un método async.

Para corregir este error

Use una interfaz que dé como resultado la invocación del método que devuelve un tipo de Task<T>, por ejemplo, IAsyncEnumerable<T>:

using System.Collections.Generic;

class C
{
    static async IAsyncEnumerable<int> M()
    {
        yield return await Task.FromResult(1);
    }
}