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

Форматирование тире в строковой интерполяции

Я только что просмотрел новую функцию интерполяции строк в С# 6.0 (см. страницу Language Features в Roslyn для более подробной информации). В текущем синтаксисе (который, как ожидается, изменится) вы можете сделать что-то вроде этого (пример взяты из сообщения в блоге, которое я пишу сейчас):

var dob2 = "Customer \{customer.IdNo} was born on \{customer.DateOfBirth:yyyyMdd}";

Однако я не могу включить тире в части форматирования, например:

var dob2 = "Customer \{customer.IdNo} was born on \{customer.DateOfBirth:yyyy-M-dd}";

Если я это сделаю, я получаю сообщение об ошибке:

Ошибка CS1056 Неожиданный символ '-' StringInterpolation Program.cs 21

Есть ли способ заставить тире работать в части форматирования? Я знаю, что могу просто использовать string.Format(), но я хочу посмотреть, можно ли это сделать со строковой интерполяцией, так же как и упражнение.

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

4b9b3361

Ответ 1

С версией интерполяции строк, которая в VS 2015 Preview, вы можете использовать символы, такие как тире в формате интерполяции, заключая их в другую пару кавычек:

var dob2 = "Customer \{customer.IdNo} was born on \{customer.DateOfBirth : "yyyy-M-dd"}";

Ответ 2

Окончательная версия более удобна для пользователя:

var text = $"The time is {DateTime.Now:yyyy-MM-dd HH:mm:ss}";