Error del compilador CS0173

Actualización: noviembre 2007

Mensaje de error

No se puede determinar el tipo de la expresión condicional porque no hay una conversión implícita entre 'clase1' y 'clase2'
Type of conditional expression cannot be determined because there is no implicit conversion between 'class1' and 'class2'

Las conversiones entre clases son útiles cuando se desea que objetos de diferentes clases funcionen con el mismo código. Sin embargo, dos clases que funcionan juntas no pueden tener conversiones mutuas y redundantes.

Para resolver el error CS0173, asegúrese de que hay una sola conversión implícita entre class1 y class2, sin importar el sentido en el que tiene lugar la misma y con independencia de la clase en la que se realiza. Para obtener más información, vea Tabla de conversiones numéricas implícitas (Referencia de C#) y Operadores de conversión (Guía de programación de C#).

Ejemplo

El código siguiente genera el error CS0173:

// CS0173.cs
public class C {}
public class A {}

public class MyClass
{
   public static void F(bool b)
   {
      A a = new A();
      C c = new C();
      object o = b ? a : c;  // CS0173
   }

   public static void Main()
   {
      F(true);
   }
}

El código siguiente genera el error CS0173 en Microsoft Visual Studio 2008, pero no en Visual Studio 2005.

//cs0173_2.cs
class M
{

static int Main ()
{
              int X = 1;
        object o = (X == 0) ? null : null; //CS0173
        return -1;
}
}