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.
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.
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!
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).