web-dev-qa-db-fra.com

Échapper les citations dans la nouvelle syntaxe de chaîne C # 6

Je suis vraiment excité par les nouvelles fonctionnalités de C # 6, y compris la nouvelle syntaxe de chaîne:

var fullName = $"My Name is {FirstName} {LastName}";

Cependant, je ne peux pas comprendre comment échapper les guillemets à l'intérieur des accolades pour faire ce qui suit:

bool includePrefix = true;

var fullName = $"My name is {includePrefix ? "Mr. " : ""}{FirstName} {LastName}";

C # 6 n'aime pas ça. J'ai dû recommencer à utiliser String.Format dans ce deuxième cas. Est-il possible d'échapper aux guillemets en utilisant la nouvelle syntaxe?

Mise à jour: oui, j'ai essayé d'utiliser le \ s'échapper, mais ce n'est pas reconnu.

46
Nathan A

mettez votre logique entre parenthèses, à l'intérieur les crochets:

var fullName = $"My name is {(includePrefix ? "Mr. " : "")}{FirstName} {LastName}";
76
Jonesopolis

Pour échapper régulièrement aux guillemets, vous devez utiliser une barre oblique (c'est-à-dire \").

Cependant, ce n'est pas le problème ici, car vous n'avez pas besoin de vous échapper, il manque juste des parenthèses sur l'expression.

Cela marche:

bool includePrefix = true;
var fullName = $"My name is {(includePrefix ? "Mr. " : "")}{FirstName} {LastName}";
19
i3arnon