Ошибка компилятора CS0217
При использовании определенного пользователем логического оператора ("оператор") как отладочного тип значения, возвращаемого этим оператором, должен совпадать с типом обоих его параметров.
Если вы задаете оператор для определяемого пользователем типа, а затем пытаетесь использовать его как оператор краткой записи, определяемый пользователем оператор должен иметь параметры и возвращаемые значения того же типа. Дополнительные сведения о операторах короткого канала см. в разделе &&
операторов и ||
операторов. Дополнительные сведения о определяемом пользователем коротком канале или условном операторе см. в разделе определяемых пользователем условных логических операторов спецификации языка C#.
Следующий пример приводит к возникновению ошибки 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;
}
}
Отзыв о .NET
.NET — это проект с открытым исходным кодом. Выберите ссылку, чтобы оставить отзыв: