Partager via


Erreur du compilateur CS0172

Mise à jour : novembre 2007

Message d'erreur

Le type d'expression conditionnelle ne peut pas être déterminé, car 'type1' et 'type2' exécutent implicitement une conversion croisée
Type of conditional expression cannot be determined because 'type1' and 'type2' implicitly convert to one another

Dans une instruction conditionnelle, vous devez pouvoir convertir les types de chaque côté de l'opérateur :. En outre, il ne peut pas exister de routines de conversion mutuelles ; vous n'avez besoin que d'une seule conversion. Pour plus d'informations, consultez Opérateurs de conversion (Guide de programmation C#).

L'exemple suivant génère l'erreur 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;
   }
}