閱讀英文

共用方式為


編譯器錯誤 CS0217

為了可以當成最少運算 (Short Circuit) 運算子使用,使用者定義的邏輯運算子 ('operator') 其傳回類型必須與其 2 個參數的類型相同。

如果您定義了一個使用者定義類型的運算子,然後嘗試使用該運算子作為最少運算運算子,則使用者定義運算子必須具有相同類型的參數和傳回值。 如需最少運算運算子的詳細資訊,請參閱 && 運算子|| 運算子。 如需使用者定義最少運算或條件式運算子的詳細資訊,請參閱 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;  
   }  
}  

另請參閱