Error del compilador CS0172

Actualización: noviembre 2007

Mensaje de error

No se puede determinar el tipo de la expresión condicional porque 'tipo1' y 'tipo2' se convierten implícitamente uno en el otro
Type of conditional expression cannot be determined because 'type1' and 'type2' implicitly convert to one another

En una instrucción condicional, debe poder convertir los tipos de ambos lados del operador :. Asimismo, no puede haber rutinas de conversión mutua; sólo es necesaria una conversión. Para obtener más información, vea Operadores de conversión (Guía de programación de C#).

El código siguiente genera el error 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;
   }
}