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