Ошибка компилятора 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()
{
}
}