更新: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; } } |