У PHP я можу зробити наступне:
$name = 'John';
$var = "Hello {$name}"; // => Hello John
Чи існує схожа мовна конструкція в C #?
Я знаю, що є, String.Format();
але я хочу знати, чи можна це зробити без виклику функції / методу в рядку.
Відповіді:
У C # 6 ви можете використовувати інтерполяцію рядків :
string name = "John";
string result = $"Hello {name}";
Виділення синтаксису для цього у Visual Studio робить його зручним для читання та перевіряє всі маркери.
Ця функціональність не вбудована в 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".
Сподіваюся, вам сподобається!
До C # 5 (-VS2013) для цього потрібно викликати функцію / метод. Або "нормальна" функція, така як, String.Format
або перевантаження оператора +.
string str = "Hello " + name; // This calls an overload of operator +.
У C # 6 (VS2015) була введена інтерполяція рядків (як описано в інших відповідях).
Використовуйте наступні методи
1: Метод перший
var count = 123;
var message = $"Rows count is: {count}";
2: Спосіб другий
var count = 123;
var message = "Rows count is:" + count;
3: Метод третій
var count = 123;
var message = string.Format("Rows count is:{0}", count);
4: Метод четвертий
var count = 123;
var message = @"Rows
count
is:{0}" + count;
5: Метод п’ятий
var count = 123;
var message = $@"Rows
count
is: {count}";