英語で読む

次の方法で共有


コンパイラ エラー 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;  
   }  
}  

関連項目