Использование переменных внутри строк - PullRequest
69 голосов
/ 29 августа 2011

В PHP я могу сделать следующее:

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

Существует ли похожая языковая конструкция в C #?

Я знаю, что есть String.Format();, но я хочу знать, может ли онбыть сделано без вызова функции / метода в строке.

Ответы [ 3 ]

176 голосов
/ 27 июля 2015

В C # 6 вы можете использовать строковую интерполяцию :

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

Подсветка синтаксиса для этого в Visual Studio делает его легко читаемым и проверяются все токены.

78 голосов
/ 29 августа 2011

Эта функция не встроена в C # 5 или ниже.
Обновление: C # 6 теперь поддерживает интерполяцию строк, см. Новые ответы.

Рекомендуемый способ сделать этобыло бы с String.Format:

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

Однако я написал небольшую библиотеку с открытым исходным кодом под названием SmartFormat , которая расширяет String.Format, чтобы он мог использоватьименованные заполнители (через отражение).Итак, вы можете сделать:

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

Надеюсь, вам понравится!

5 голосов
/ 29 августа 2011

До C # 5 (-VS2013) вы должны вызывать функцию / метод для него.Либо "нормальная" функция, такая как String.Format, либо перегрузка оператора +.

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

В C # 6 (VS2015) введена интерполяция строк (как описано в других ответах).

...