web-dev-qa-db-fra.com

Utilisation de variables dans des chaînes

Dans PHP je peux faire ce qui suit:

$name = 'John';
$var = "Hello {$name}";    // => Hello John

Existe-t-il une construction de langage similaire en C #?

Je sais qu'il y a String.Format(); mais je veux savoir si cela peut être fait sans appeler une fonction/méthode sur la chaîne.

71
thwd

En C # 6, vous pouvez utiliser interpolation de chaîne :

string name = "John";
string result = $"Hello {name}";

La coloration syntaxique pour cela dans Visual Studio le rend très lisible et tous les jetons sont vérifiés.

182
Fenton

Cette fonctionnalité n'est pas intégrée à C # 5 ou inférieur.
Mise à jour: C # 6 prend désormais en charge l’interpolation de chaînes, voir les réponses plus récentes.

La façon recommandée de le faire serait avec String.Format:

string name = "Scott";
string output = String.Format("Hello {0}", name);

Cependant, j'ai écrit une petite bibliothèque open-source appelée SmartFormat qui étend String.Format afin qu’il puisse utiliser des espaces réservés nommés (via réflexion). Donc, vous pourriez faire:

string name = "Scott";
string output = Smart.Format("Hello {name}", new{name}); // Results in "Hello Scott".

J'espère que vous aimez!

78
Scott Rippey

Jusqu'en C # 5 (-VS2013), vous devez appeler une fonction/méthode pour cela. Soit une fonction "normale" telle que String.Format ou une surcharge de l'opérateur +.

string str = "Hello " + name; // This calls an overload of operator +.

En C # 6 (VS2015), une interpolation de chaîne a été introduite (comme décrit par d'autres réponses).

5
Anders Abel