Errore del compilatore CS0151

Aggiornamento: novembre 2007

Messaggio di errore

È previsto un valore di tipo integrale.
A value of an integral type expected

È stata utilizzata una variabile in una situazione in cui era richiesto un tipo di dati integrale. Per ulteriori informazioni, vedere la classe Tipi (Guida per programmatori C#).

Esempio

Questo errore può verificarsi quando non è disponibile alcuna conversione o se le conversioni implicite disponibili generano una situazione ambigua. Il seguente codice di esempio genera l'errore 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;
      }
   }
}

In Visual Studio 2008 and later, a void method invocation generates CS0151. You can fix the error by calling a method that returns an integral type such as int or long.

class C
{
    static void Main()
    {

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

    static void M()
    {
    }
}