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


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