Ошибка компилятора CS0217
Обновлен: Ноябрь 2007
Сообщение об ошибке
Для использования в качестве логического оператора краткой записи тип возвращаемого значения пользовательского логического оператора ("operator") должен быть аналогичен типам двух его параметров.
In order to be applicable as a short circuit operator a user-defined logical operator ('operator') must have the same return type as the type of its 2 parameters.
При определении оператора для пользовательского типа и последующей попытке использовать его как оператор краткой записи пользовательский оператор должен иметь параметры и возвращаемые значения того же типа. Дополнительные сведения об упрощенных операторах см. в разделах Оператор && и Оператор ||.
В следующем примере возникает ошибка CS0217.
// CS0217.cs
using System;
public class MyClass
{
public static bool operator true (MyClass f)
{
return false;
}
public static bool operator false (MyClass f)
{
return false;
}
public static implicit operator int(MyClass x)
{
return 0;
}
public static int operator & (MyClass f1, MyClass f2) // CS0217
// try the following line instead
// public static MyClass operator & (MyClass f1, MyClass f2)
{
return new MyClass();
}
public static void Main()
{
MyClass f = new MyClass();
int i = f && f;
}
}
См. также
Ссылки
Перегружаемые операторы (Руководство по программированию в C#)