Наверняка, вы видели символ $ перед строкой. Этот знак говорит о том, что используется интерполяция строк c#. Этот механизм позволяет максимально удобным образом выполнять форматирование текста. Разумеется, для тех же целей можно использовать String.Format.

Подпишись на группу Вконтакте и Телеграм-канал. Там еще больше полезного контента для программистов.
А на YouTube-канале ты найдешь обучающие видео по программированию. Подписывайся!

Рассмотрим на коротком примере, что удобнее.

var one = 1;
var two = 2;
var three = 3;
			
var someStringForFormatting =
	"Для этой строчки используется форматирование. Сосчитаем до трех {0}, {1}, {2}!";

var stringWithInterpolation =
	$"Для этой строки используется интерполяция. Сосчитаем до трех {one}, {two}, {three}!";

Console.WriteLine(
	String.Format(someStringForFormatting,
		one,
		two,
		three));
Console.WriteLine();
Console.WriteLine(stringWithInterpolation);
Console.ReadLine();
Результат выполнения фрагмента кода
Результат выполнения фрагмента кода

Так, результат выполнения не слишком отличается. Однако, интерполяция строк в определенной степени проще в использовании. К тому же, если мы модифицируем вызов String.Format следующим образом.

Console.WriteLine(
	String.Format(someStringForFormatting,
		one,
		two));

Получим исключение.

Исключение String.Format
Исключение String.Format

Говоря проще, количество переменных, переданных методу String.Format, не соответствует изначально заданному. Из-за чего мы получили ошибку.

Интерполяция строк c# — интересные механизмы

Указание формата при интерполяции

Помимо удобства форматирования строки, мы можем использовать указание формата. Это можно делать для любых переменных. Особенно удобным этот механизм можно назвать при работе с датами. Так, мы можем отображать даты в соответствии с форматом региона конечного пользователя.

var today = DateTime.Parse("2019-11-09");

var ru = $"Текущая дата: {today: dd.MM.yyyy}";
var us = $"Today: {today: yyyy.MM.dd}";

Console.WriteLine(ru);
Console.WriteLine();
Console.WriteLine(us);
Console.ReadLine();
Результат выполнения фрагмента кода
Результат выполнения фрагмента кода

Использование тернарного оператора

Если строка формируется по какому-либо условию, мы можем использовать тернарный оператор. Подобные строки, как правило, достаточно удобны в поддержке.

const string POSITIVE = "позитивное";
const string NEGATIVE = "отрицательное";

Console.WriteLine("Укажите число:");
var number = Convert.ToInt32(Console.ReadLine());
var message = $"Введенное число {(number > 0 ? POSITIVE : NEGATIVE)}";
Console.WriteLine(message);
Console.WriteLine("А теперь что-нибудь с другим знаком!");
number = Convert.ToInt32(Console.ReadLine());
message = $"Введенное число {(number > 0 ? POSITIVE : NEGATIVE)}";
Console.WriteLine(message);
Console.ReadLine();
Результат выполнения фрагмента кода
Результат выполнения фрагмента кода

Используя тернарный оператор в интерполированных строках, не забывайте оборачивать его в скобки. Как вы помните, двоеточие используется при указании формата, а потому без скобок компилятор поймет нас неправильно.

Интерполяция строк c# — Итого

Интерполяция строк c# — крайне мощный механизм, позволяющий работать с строками максимально удобным образом. По сути, этот инструмент может найти применение в любом приложении. А главное, интерполяция проста в изучении. И еще одним важным преимуществом её использования является увеличение читаемости кода и его понимания. Ведь код читают намного чаще, чем вносят в него изменения.

Кроме того, рекомендую прочитать статью String C# | Работа со строками в C#. А также подписывайтесь на группу ВКонтакте, Telegram и YouTube-канал. Там еще больше полезного и интересного для программистов.