Подтвердить что ты не робот

Использование переменных внутри строк

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

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

Есть ли подобная языковая конструкция в С#?

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

4b9b3361

Ответ 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;

если вам нужно руководство по этим основным операциям, я предлагаю сначала собрать книгу С#. вы можете посмотреть здесь.