Error del compilador CS0837
Actualización: noviembre 2007
Mensaje de error
El primer operando de un operador "is" o "as" no puede ser una expresión lambda ni un método anónimo.
The first operand of an "is" or "as" operator may not be a lambda expression or anonymous method.
Las expresiones lambda y los métodos anónimos no se pueden utilizar en la parte izquierda de un operador is o as.
Para corregir este error
Si el error implica al operador is, recuerde que is acepta un valor y un tipo y le indica si el valor puede convertirse en ese tipo mediante una referencia, conversión boxing o unboxing. Dado que las expresiones lambda no son valores y no tienen referencias ni conversiones boxing o unboxing, no son elementos candidatos para is.
Si se produce un uso incorrecto de as en el código, probablemente la solución sea cambiarlo a una conversión.
Ejemplo
El ejemplo siguiente genera el error CS0837:
// 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;
}
}
}