Nenhuma conversão implícita ao usar o operador condicional [duplicado]
Esta pergunta já tem uma resposta aqui:
Tipos anuláveis e operador ternário: por que é `? 10: null` proibido? [duplicado 9 respostasTenho as seguintes classes:
abstract class AClass { }
class Foo : AClass { }
class Bar : AClass { }
E quando estou tentando usá-los:
AClass myInstance;
myInstance = true ? new Foo() : new Bar();
Este código não será compilado por causa do "Tipo de expressão condicional não pode ser determinado porque não há conversão implícita entre 'CSharpTest.Class1.Foo' e 'CSharpTest.Class1.Bar'"
Mas as seguintes amostras estão compilando ok:
if (true)
{
myInstance = new Foo();
}
else
{
myInstance = new Bar();
}
Está tudo bem também:
myInstance = true ? (AClass) new Foo() : new Bar();
o
myInstance = true ? new Foo() : (AClass) new Bar();
or que existe uma diferença tão grande no comportamento do operador condicional e na cláusula i