更新:2007 年 11 月

错误消息

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

如果将运算符定义为用户定义类型,然后尝试将运算符用作短路运算符,则用户定义的运算符必须具有相同类型的参数和返回值。有关短路运算符的更多信息,请参见 && 运算符|| 运算符

下面的示例生成 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# 编程指南)