Leggere in inglese

Condividi tramite


Errore del compilatore CS0837

Il primo operando di un operatore 'is' o 'as' non può essere un'espressione lambda, un metodo anonimo o un gruppo di metodi.

Le espressioni lambda, i metodi anonimi e i gruppi di metodi non possono essere usati sul lato sinistro di is o as.

Per correggere l'errore

  • Se l'errore riguarda l'operatore is , ricordare che is accetta un valore e un tipo e indica se il valore può essere assegnato a quel tipo da un riferimento, una conversione boxing o una conversione unboxing. Le espressioni lambda non sono valori e non hanno riferimenti, conversioni boxing o unboxing, quindi non sono adatte per is.

  • Se il codice usa erroneamente as, la correzione probabilmente è l'impostazione su un cast.

Esempio

L'esempio seguente genera l'errore 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;
        }
    }
}