Partager via


Erreur du compilateur CS0151

Mise à jour : novembre 2007

Message d'erreur

La valeur d'un type intégral est attendue
A value of an integral type expected

Une variable a été utilisée dans une situation qui nécessitait un type de données intégral. Pour plus d'informations, consultez Types (Guide de programmation C#).

Exemple

Cette erreur peut se produire lorsqu'il n'y a aucune conversion ou si les conversions implicites disponibles ont comme résultat une situation ambiguë. L'exemple suivant génère l'erreur CS0151.

// CS0151.cs
public class MyClass
{
   public static implicit operator int (MyClass aa)
   {
      return 0;
   }

   public static implicit operator long (MyClass aa)
   {
      return 0;
   }

   public static void Main()
   {
      MyClass a = new MyClass();

      // Compiler cannot choose between int and long
      switch (a)   // CS0151
      // try the following line instead
      // switch ((int)a)
      {
         case 1:
            break;
      }
   }
}

Dans Visual Studio 2008 et versions ultérieures, un appel de méthode void génère CS0151. Vous pouvez résoudre l'erreur en appelant une méthode qui retourne un type intégral tel que int ou long.

class C
{
    static void Main()
    {

        switch (M()) // CS0151
        {
            default:
                break;
        }
    }

    static void M()
    {
    }
}