使用英语阅读

通过


编译器错误 CS0217

为了可以像短路运算符一样应用,用户定义的逻辑运算符 (“operator”) 的返回类型必须与它的两个参数的类型相同。

如果为用户定义的类型定义运算符,然后尝试将运算符用作短路运算符,则用户定义的运算符必须具有类型相同的参数和返回值。 有关短路运算符的详细信息,请参阅 && 运算符|| 运算符。 有关用户定义的短路或条件操作符的详细信息,请参阅 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;  
   }  
}  

另请参阅