string.Format () donnant "La chaîne d'entrée n'est pas au format correct"

115

Qu'est-ce que je fais de mal ici?

string tmp = @"
    if (UseImageFiles) {
        vCalHeader += ""<td><img onmousedown='' src= '{0}cal_fastreverse.gif' width='13px' height='9' onmouseover='changeBorder(this, 0)' onmouseout='changeBorder(this, 1)' style='border:1px solid white'></td>\n""; //Year scroller (decrease 1 year)
        calHeight += 22;
    }";

string x = "xter";
tmp = string.Format(tmp, x);

Je reçois

La chaîne d'entrée n'était pas au format correct

en essayant de changer {0}. Je fais cela en C # et WinForms.

L'exception de format n'était pas gérée
La chaîne d'entrée n'était pas au format correct

Résoudre les problèmes que je reçois:

Assurez-vous que les arguments de votre méthode sont au bon format. Lors de la conversion d'une chaîne en datetime, analysez la chaîne pour supprimer la date avant de placer chaque variable dans l'objet DateTime.

Monsieur Rendez-vous
la source

Réponses:

303

string.Format()considère que chaque "{" ou "}" fait partie d'un espace réservé (comme "{0}" que vous utilisez déjà). Vous devez échapper à chaque occurrence littérale en la doublant.

Donc, dans votre cas, faites:

 string tmp = @"
    if (UseImageFiles) {{
        ...
    }}";
Christian.K
la source
4
Je vous remercie! Le message d'erreur «La chaîne d'entrée n'était pas au format correct» ne m'a pas du tout été utile. Je pensais que l'un de mes paramètres était nul ou quelque chose du genre.
styfle