Поделиться через


Ошибка компилятора CS0151

Обновлен: Ноябрь 2007

Сообщение об ошибке

Ожидается значение целого типа
A value of an integral type expected

Переменная использована в ситуации, когда необходим целочисленный тип данных. Дополнительные сведения см. в разделе Типы (руководство по программированию в C#).

Пример

Эта ошибка может возникать в случаях, когда отсутствует преобразование или имеющееся в наличии неявное преобразование приводит к неоднозначной ситуации. Следующий пример проводит к генерированию ошибки 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;
      }
   }
}

В Visual Studio 2008 и более поздних версий при вызове метода void формируется ошибка CS0151. Ошибка может быть исправлена вызовом метода, который возвращает значение целого типа, например int или long.

class C
{
    static void Main()
    {

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

    static void M()
    {
    }
}