Je rencontre des erreurs de compilation inattendues avec ce code:erreur bizarre du compilateur lors de la coulée dans l'opérateur ternaire/conditionnelle
bool b = true; //or false
StringBuilder builder = ...; // a string builder filled with content
IVersePart vp = b ? (DualLanguageVersePart)builder : (VersePart)builder;
Les deux DualLanguageVersePart et VersePart implémenter l'interface IVersePart. Les deux DualLanguageVersePart et VersePart ont un opérateur de cast explicite StringBuilder.
Puisque les deux classes implémenter l'interface qui est le type de vp
, je m'attendrais à ce que cela fonctionne parfaitement, ou au moins compile correctement. Au lieu de cela, le compilateur signale qu'aucune conversion implicite ne peut être effectuée entre les deux types.
Pourquoi cela ne fonctionne-t-il pas?
duplication possible de [Types nullable et l'opérateur ternaire. Pourquoi cela ne fonctionnera-t-il pas?] (Http://stackoverflow.com/questions/858080/nullable-types-and-the-ternary-operator-why-wont-this-work) – BFree
Vous décrivez une erreur de compilation, mais ne fournit pas le texte d'erreur exact ou le numéro de ligne sur lequel il apparaît. Cela pourrait être une information importante, tu crois? – abelenky