Язык программирования C#9 и платформа .NET5
Console.WriteLine();}Здесь объяснять особо нечего: метод просто вызывает разнообразные члены, такие как
иToUpper(), на локальной переменнойContains(), чтобы получить разные форматы и трансформации. Ниже приведен вывод:string***** Fun with Strings *****=> Basic String functionality:Value of firstName: FreddyfirstName has 6 characters.firstName in uppercase: FREDDYfirstName in lowercase: freddyfirstName contains the letter y?: TruefirstName after replace: FredНесмотря на то что вывод не выглядит особо неожиданным, вывод, полученный в результате вызова метода
, может вводить в заблуждение. В действительности переменнаяReplace()вообще не изменяется; взамен получается новая переменнаяfirstNameв модифицированном формате. Чуть позже мы еще вернемся к обсуждению неизменяемой природы строк.stringВыполнение конкатенации строк
Переменные
могут соединяться вместе для построения строк большего размера с помощью операцииstringязыка С#. Как вам должно быть известно, такой прием формально называется конкатенацией строк. Рассмотрим следующую вспомогательную функцию:+static void StringConcatenation(){Console.WriteLine("=> String concatenation:");string s1 = "Programming the ";string s2 = "PsychoDrill (PTP)";string s3 = s1 + s2;Console.WriteLine(s3);Console.WriteLine();}Интересно отметить, что при обработке символа
компилятор C# выпускает вызов статического метода+. В результате конкатенацию строк можно также выполнять, вызывая методString.Concat()напрямую (хотя фактически это не дает никаких преимуществ, а лишь увеличивает объем набираемого кода):String.Concat()static void StringConcatenation(){Console.WriteLine("=> String concatenation:");string s1 = "Programming the ";string s2 = "PsychoDrill (PTP)";string s3 = String.Concat(s1, s2);Console.WriteLine(s3);Console.WriteLine();}Использование управляющих последовательностей
Подобно другим языкам, основанным на С, строковые литералы C# могут содержать разнообразные управляющие последовательности, которые позволяют уточнять то, как символьные данные должны быть представлены в потоке вывода. Каждая управляющая последовательность начинается с символа обратной косой черты, за которым следует специфический знак. В табл. 3.6 перечислены наиболее распространенные управляющие последовательности.
Например, чтобы вывести строку, которая содержит символ табуляции после каждого слова, можно задействовать управляющую последовательность
. Или предположим, что нужно создать один строковый литерал с символами кавычек внутри, второй — с определением пути к каталогу и третий — со вставкой трех пустых строк после вывода символьных данных. Для этого можно применять управляющие последовательности\t,\"и\\. Кроме того, ниже приведен еще один пример, в котором для привлечения внимания каждый строковый литерал сопровождается звуковым сигналом:\nstatic void EscapeChars(){Console.WriteLine("=> Escape characters:\a");string strWithTabs = "Model\tColor\tSpeed\tPet Name\a ";Console.WriteLine(strWithTabs);Console.WriteLine("Everyone loves \"Hello World\"\a ");Console.WriteLine("C:\\MyApp\\bin\\Debug\a ");// Добавить четыре пустых строки и снова выдать звуковой сигнал.Console.WriteLine("All finished.\n\n\n\a ");Console.WriteLine();}Выполнение интерполяции строк
Синтаксис с фигурными скобками, продемонстрированный ранее в главе
и т.д.), существовал в рамках платформы .NET еще со времен версии 1.0. Начиная с выхода версии C# 6, при построении строковых литералов, содержащих заполнители для переменных, программисты на C# могут использовать альтернативный синтаксис. Формально он называется интерполяцией строк. Несмотря на то что выходные данные операции идентичны выходным данным, получаемым с помощью традиционного синтаксиса форматирования строк, новый подход позволяет напрямую внедрять сами переменные, а не помещать их в список с разделителями-запятыми.({0}, {1}Взгляните на показанный ниже дополнительный метод в нашем классе
), который строит переменную типаProgram(StringInterpolation()с применением обоих подходов:stringstatic void StringInterpolation(){Console.WriteLine("=> String interpolation:\a");// Некоторые локальные переменные будут включены в крупную строку.int age = 4;
