Страницы

Поиск по вопросам

понедельник, 29 октября 2018 г.

Что означают символы $, {}, {0} в записи вывода строк?

Что означают символы: $, {}, {0} - в подобных записях вывода строк?
Console.WriteLine($"Имя: {name} Возраст: {age}"); Console.WriteLine("Выводится значение {0} ", count);


Ответ

Со знаком доллара - это интерполяция строк, которая появилась в C#6. $ указывает на то, что это самая строка будет той самой, куда можно подставить переменные напрямую, не заморачиваясь какой-нибудь конкатенацией или строкой составного формата (об этом ниже). То есть вместо записи:
Console.WriteLine("Имя: " + name + ", Возраст: " + age);
Можно записать
Console.WriteLine($"Имя: {name} Возраст: {age}");
где name и age - переменные со значениями, которые объявлены где-то выше в коде.
Фигурные скобки внутри нужны, чтобы отделить простые строки от действительно имен переменных. Иначе компилятор не смог бы понять где name является просто частью строки, а где подставляемая переменная.

Там где написано {0}, {1} и т.д. - это cтрока составного формата, где вместо {0}, {1} и т.д. подставляются значения переменных, которые перечислены через запятую после это строки. Пример из доков:
string name = "Fred"; String.Format("Name = {0}, dt = {1}", name, DateTime.Now);
Здесь Name = и , hours = — фиксированный текст. Элементы форматирования — это "{0}" c индексом 0, который соответствует объекту name, и "{1}" с индексом 1, который соответствует объекту DateTime.Now
Номер соответствует номеру переменной в перечислении name, DateTime.Now. То есть если расположить их так: DateTime.Now, name, то строка выше выведется так:
Name = 01.01.2017 10:10:00 , dt = Fred
вместо
Name = Fred , dt = 01.01.2017 10:10:00
Кроме того сами цифры в строке можно размещать в разные позиции, главное, чтобы они соответствовали номеру переменной в перечислении. Так, если написать
String.Format("{1}{0}Name =, dt = ", name, DateTime.Now);
то выведется:
01.01.2017 10:10:00FredName =, dt =

Возможностей интерполирования строк и строки составного формата конечно чуть больше, чем просто подставить переменную (например задать ширину поля или задать тут же формат даты и времени). Поэтому чуть более подробно можно почитать в документации по ссылкам выше

Комментариев нет:

Отправить комментарий