asumir dos clases, ambos descendientes de la misma superclase, como esto:El operador condicional se confunde, pero ¿por qué?
class MySuperClass{}
class A : MySuperClass{}
class B : MySuperClass{}
A continuación, esta asignación no pasará el compilador:
MySuperClass p = myCondition ? new A() : new B();
El compilador se queja de que A y B no son compatibles (El tipo de expresión condicional no puede determinarse porque no hay una conversión implícita entre 'A' y 'B' [CS0173]). Pero ambos son del tipo MySuperClass, por lo que en mi opinión esto debería funcionar. No es que sea un gran problema; un elenco simple es todo lo que se necesita para iluminar el compilador. Pero seguramente es un inconveniente en el compilador de C#? ¿No estás de acuerdo?
Esta es una pregunta frecuente. Ver por ejemplo http://stackoverflow.com/questions/2215745 o http://stackoverflow.com/questions/3150086 o http://stackoverflow.com/questions/858080. Ver también mis artículos sobre el tema: http://blogs.msdn.com/b/ericlippert/archive/tags/conditional+operator/ –