CS0173 de erro do compilador

Mensagem de erro

Tipo de expressão condicional não pode ser determinado porque não há nenhuma conversão implícita entre 'class1' e 'class2'

Conversões entre as classes são úteis quando você deseja que os objetos de diferentes classes para trabalhar com o mesmo código.No entanto, duas classes que trabalharão juntos não podem ter conversões mútuas e redundantes.

Para resolver CS0173, verifique se há uma única conversão implícita entre class1 e class2, independentemente de qual direção a conversão está em e independentemente de qual classe a conversão é no. Para obter mais informações, consulte Numérico tabela Conversions (referência C#) implícita e Operadores de conversão (Guia de programação C#).

Exemplo

O exemplo a seguir gera 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);
   }
}

O código a seguir produz CS0173 em Microsoft Visual Studio 2008 mas não no Visual Studio 2005.

//cs0173_2.cs
class M
{

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