assumere due classi, entrambi discendenti della stessa superclasse, in questo modo:L'operatore condizionale viene confuso, ma perché?
class MySuperClass{}
class A : MySuperClass{}
class B : MySuperClass{}
Allora questo incarico non passerà il compilatore:
MySuperClass p = myCondition ? new A() : new B();
Il compilatore si lamenta che A e B non sono compatibili (Il tipo di espressione condizionale non può essere determinato perché non esiste una conversione implicita tra "A" e "B" [CS0173]). Ma sono entrambi di tipo MySuperClass, quindi secondo me dovrebbe funzionare. Non che sia un grosso problema; un semplice cast è tutto ciò che serve per illuminare il compilatore. Ma sicuramente è un ostacolo nel compilatore C#? Non sei d'accordo?
Questa è una domanda frequente. Vedi ad esempio http://stackoverflow.com/questions/2215745 o http://stackoverflow.com/questions/3150086 o http://stackoverflow.com/questions/858080. Vedi anche i miei articoli sull'argomento: http://blogs.msdn.com/b/ericlippert/archive/tags/conditional+operator/ –