Lire en anglais

Partager via


Erreur du compilateur CS0837

Le premier opérande d'un opérateur « is » ou « as » ne peut pas être une expression lambda, une méthode anonyme ni un groupe de méthodes.

Les expressions lambda et les méthodes anonymes ne peuvent pas être utilisées du côté gauche de is ou as.

Pour corriger cette erreur

  • Si l’erreur implique l’opérateur is , n’oubliez pas que is prend une valeur et un type, puis vous indique si la valeur peut être transformée en ce type par une conversion de référence, boxing ou unboxing. Étant donné que les expressions lambda ne sont pas des valeurs et qu’elles n’ont aucune conversion de référence, boxing ou unboxing, elles ne sont pas candidates pour is.

  • Si le code utilise incorrectement as, la correction consiste probablement à le transformer en cast.

Exemple

L’exemple suivant génère l’erreur 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;
        }
    }
}