Leer en inglés

Compartir a través de


Error del compilador CS0837

Es posible que el primer operando de un operador 'is' o 'as' no sea una expresión lambda, un método anónimo ni un grupo de métodos.

Puede que las expresiones lambda, los métodos anónimos y los grupos de métodos no se usen en el lado izquierdo de is o as.

Para corregir este error

  • Si el error está relacionado con el operador is , recuerde que is toma un valor y un tipo y le indica si se puede convertir el valor en ese tipo mediante una conversión boxing, unboxing o de referencia. Como las expresiones lambda no son valores y no tienen conversiones boxing, unboxing o de referencia, las expresiones lambda no son candidatas para is.

  • Si el código hace un uso inadecuado de as, probablemente la corrección lo cambiará a una conversión.

Ejemplo

El ejemplo siguiente genera el error CS0837:

C#
// cs0837.cs
namespace TestNamespace
{
    public delegate void Del();

    class Test
    {
        static int Main()
        {
            bool b1 = (() => { }) is Del;   // CS0837
            bool b2 = delegate() { } is Del;// CS0837
            Del d1 = () => { } as Del;      // CS0837  
            Del d2 = delegate() { } as Del; // CS0837
            return 1;
        }
    }
}