Прочитать на английском

Поделиться через


Ошибка компилятора CS0172

Не удается определить тип условного выражения, так как "тип1" и "тип2" неявно преобразуются друг в друга

В условном операторе необходимо иметь возможность неявно преобразовывать типы на обеих сторонах маркера : . Кроме того, не может быть взаимных неявных преобразований; требуется только одно преобразование.

Следующий пример приводит к возникновению ошибки CS0172:

C#
// CS0172.cs  
public class Square  
{  
   public class Circle  
   {  
      public static implicit operator Circle(Square aa)  
      {  
         return null;  
      }  
  
      public static implicit operator Square(Circle aa)  
      // using explicit resolves this error  
      // public static explicit operator Square(Circle aa)  
      {  
         return null;  
      }  
   }  
  
   public static void Main()  
   {  
      Circle aa = new Circle();  
      Square ii = new Square();  
      object o = (1 == 1) ? aa : ii;   // CS0172  
      // the following cast would resolve this error  
      // (1 == 1) ? aa : (Circle)ii;  
   }  
}  

См. также