Lire en anglais

Partager via


Erreur du compilateur CS0172

Impossible de déterminer le type d’expression conditionnelle, car 'type1' et 'type2' sont convertis implicitement l’un en l’autre

Dans une instruction conditionnelle, vous devez pouvoir convertir implicitement les types de chaque côté du jeton :. De plus, il ne peut pas y avoir de conversions implicites mutuelles, une seule conversion suffit.

L’exemple suivant génère l’avertissement CS0172 :

// 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;  
   }  
}  

Voir aussi