Error del compilador CS0411

Actualización: noviembre 2007

Mensaje de error

Los argumentos de tipo para el método 'método' no se pueden inferir a partir del uso. Intente especificar los argumentos de tipo explícitamente.
The type arguments for method 'method' cannot be inferred from the usage. Try specifying the type arguments explicitly.

Este error se produce cuando se llama a un método genérico sin proporcionar explícitamente los argumentos de tipo y el compilador no es capaz de deducir cuáles se pretende utilizar. Para evitarlo, agregue los argumentos de tipo que desee utilizar entre corchetes angulares.

Ejemplo

El código siguiente genera el error CS0411:

// CS0411.cs
class C
{
    void G<T>()
    {
    }

    public static void Main()
    {
        G();  // CS0411
        // Try this instead:
        // G<int>();
    }
}

Otros casos posibles en que puede producirse este error incluyen cuando el parámetro es null, puesto que no tiene ninguna información de tipo:

// CS0411b.cs
class C
{
    public void F<T>(T t) where T : C 
    {
    }

    public static void Main()
    {
        C c = new C();
        c.F(null);  // CS0411
    }
}