Przeczytaj w języku angielskim

Udostępnij za pośrednictwem


Błąd kompilatora CS0217

Aby mieć zastosowanie jako operator zwariowania, operator logiczny zdefiniowany przez użytkownika ("operator") musi mieć ten sam typ zwracany co typ jego 2 parametrów.

Jeśli zdefiniujesz operator dla typu zdefiniowanego przez użytkownika, a następnie spróbujesz użyć operatora jako operatora zwarć, operator zdefiniowany przez użytkownika musi mieć parametry i zwracane wartości tego samego typu. Aby uzyskać więcej informacji na temat operatorów zwarć, zobacz && operator i || operator. Aby uzyskać więcej informacji na temat zwarć zdefiniowanych przez użytkownika lub operatorów warunkowych, zobacz sekcję Operatory warunkowe zdefiniowane przez użytkownika specyfikacji języka C#.

Poniższy przykład generuje 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;  
   }  
}  

Zobacz też