2017-04-11 1 views
0

Je suis en train d'écrireC# - Pourquoi ne puis-je pas utiliser une opération ternaire dans une chaîne?

$"This is { awesomeEnough ? "awesome" : "not awesome"}" 

mais j'obtiens l'erreur du compilateur

CS1003 Erreur de syntaxe, ':' attendu

est-il attend un comportement ou un bug?

+0

Le ':' délimite l'expression de la mise en forme des chaînes interpolées, donc vous devez le forcer à penser pas que ce que delimiter par mettre l'expression entre parenthèses '$" Ceci est {(awesomeEnough ? "awesome": "not awesome")} "' – juharr

Répondre

3

Priorité de l'opérateur. Parenthesis devrait résoudre le problème

$"This is { (awesomeEnough ? "awesome" : "not awesome") }" 
+0

Était sur le point de dire ceci, bonne solution! – EpicKip

+2

La raison n'est pas la précédence de l'opérateur - c'est juste que le colon est interprété comme un séparateur pour un spécificateur de format –