Использование переменных внутри строк
В PHP я могу сделать следующее:
$name = 'John';
$var = "Hello {$name}"; // => Hello John
Есть ли подобная языковая конструкция в С#?
Я знаю, что есть String.Format();
, но я хочу знать, можно ли это сделать без вызова функции/метода в строке.
Ответы
Ответ 1
Эта функциональность не встроена в С# 5 или ниже.
Обновление: С# 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".
Надеюсь, вам понравится!
Ответ 2
В С# 6 вы можете использовать строчную интерполяцию:
string name = "John";
string result = $"Hello {name}";
Выделение синтаксиса для этого в Visual Studio делает его доступным для чтения и все маркеры проверяются.
Ответ 3
До С# 5 (-VS2013) вы должны вызвать для него функцию/метод. Либо "нормальная" функция, такая как String.Format
, либо перегрузка оператора +.
string str = "Hello " + name; // This calls an overload of operator +.
В С# 6 (VS2015) введена строковая интерполяция (как описано другими ответами).
Ответ 4
string name = "john";
string var = "Hello " + name;
если вам нужно руководство по этим основным операциям, я предлагаю сначала собрать книгу С#. вы можете посмотреть здесь.