Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю. Страница 60
string name = "Soren";
// Использование синтаксиса с фигурными скобками.
string greeting = string.Format("Hello {0} you are {1} years old.",
name, age);
Console.WriteLine(greeting);
// Использование интерполяции строк.
string greeting2 = $"Hello {name} you are {age} years old.";
Console.WriteLine(greeting2);
}
В переменной
greeting2
$
С новым синтаксисом связан еще один интересный аспект: фигурные скобки, используемые в интерполяции строк, обозначают допустимую область видимости. Таким образом, с переменными можно применять операцию точки, чтобы изменять их состояние. Рассмотрим модификацию кода присваивания переменных
greeting
greeting2
string greeting = string.Format("Hello {0} you are {1} years old.",
name.ToUpper(), age);
string greeting2 = $"Hello {name.ToUpper()} you are {age} years old.";
Здесь посредством вызова
ToUpper()
{age += 1}
Полезно также отметить, что в рамках нового синтаксиса внутри строкового литерала по-прежнему можно использовать управляющие последовательности. Таким образом, для вставки символа табуляции необходимо применять последовательность
\t
string greeting = string.Format("\tHello {0} you are {1} years old.",
name.ToUpper(), age);
string greeting2 = $"\tHello {name.ToUpper()} you are {age} years old.";
Определение дословных строк (обновление в версии 8.0)
Когда вы добавляете к строковому литералу префикс
@
string
\\
// Следующая строка воспроизводится дословно,
// так что отображаются все управляющие символы.
Console.WriteLine(@"C:\MyApp\bin\Debug");
Также обратите внимание, что дословные строки могут использоваться для предохранения пробельных символов в строках, разнесенных по нескольким строкам вывода:
// При использовании дословных строк пробельные символы предохраняются.
string myLongString = @"This is a very
very
very
long string";
Console.WriteLine(myLongString);
Применяя дословные строки, в литеральную строку можно также напрямую вставлять символы двойной кавычки, просто дублируя знак
"
Console.WriteLine(@"Cerebus said ""Darrr! Pret-ty sun-sets""");
Дословные строки также могут быть интерполированными строками за счет указания операций интерполяции (
$
@
string interp = "interpolation";
string myLongString2 = $@"This is a very
very
long string with {interp}";
Нововведением в версии C# 8 является то, что порядок следования этих операций не имеет значения. Работать будет либо
$@
@$
Работа со строками и операциями равенства
Как будет подробно объясняться в главе 4, ссылочный тип — это объект, размещаемый в управляемой куче со сборкой мусора. По умолчанию при выполнении проверки на предмет равенства ссылочных типов (с помощью операций
==
! =
true
string
string
static void StringEquality()
{
Console.WriteLine("=> String equality:");