Форматирование в ToString () и интерполяция строк
В коде значение переменной string report определяют две интерполируемых строки, соединенные знаком конкатенации. В первой из названных строк два интерполируемых выражения, каждое из которых при обработке заменяется значением соответствующей целочисленной переменной числитель и знаменатель. Во второй строке интерполируемое выражение более сложное. С его помощью вычисляется вещественное значение… Читать ещё >
Форматирование в ToString () и интерполяция строк (реферат, курсовая, диплом, контрольная)
До сего времени мы использовали метод ToStringO без параметов. Именно в таком виде метод наследуется всеми классами от общего базового класса object. Реализация этого метода в object предполагает, что метод возвращает строку, представляющую полное имя типа того объекта для которого метод без параметров вызван. Чтобы метод представлял в виде строки «значение объекта», этот метод в каждом из базовых классов платформы .NET перегружен. Именно поэтому, применяя метод ToStringO, например, к целочисленному литералу, мы получаем строковое представление значения соответствующего целого числа, а не строку «System.Int32» .
Однако, применяя метод без параметров, программист не может по своему усмотрению форматировать строку с изображением обрабатываемого значения. Кроме того, строку нельзя форматировать с учетом региональных стандартов. Например, в Европейских государствах при записи вещественного числа дробную часть отделяют от целой запятой, а в США для этой цели используют символ точки.
Для устранения указанных затруднений в каждом из классов, представляющие базовые типы платформы .NET, кроме метода ToStringO без параметров, включены варианты того же метода с одним и с двумя параметрами. Первый из этих параметров обеспечивает управление форматированием создаваемой строки. Второй параметр служит для указания региональных стандартов.
Остановимся на возможностях первого из названных параметров метода ToStringO. Для задания соответствующего ему аргумента используется форматная строка со спецификатором формата (S) и при необходимости со спецификатором точности (R, см. табл. 8.3.) В качестве примера приведем следующий фрагмент кода:
double pi = Math. PI;
Console.WriteLine (pi.ToString («F»));
Console.WriteLine (pi.ToString («F4»));
Console.WriteLine ((pi*100).ToString («E4»));
На консольный экран будет выведено:
- 3,14
- 3,1416
- 3,1416Е+002
Более сложное форматирование числовых данных в методе ToStringO можно организовать, используя в форматной строке так называемые «пользовательские спецификаторы формата». С ними можно познакомиться, обратившись к документации или к справочной литературе ([15]). А сейчас рассмотрим еще одну возможность модифицировать формируемые строки.
В C# 7.0 введены так называемые интерполируемые строки. Интерполируемая строка — это строковый литерал, перед которым помещен символ $. Внутри этого литерала могут находиться интерполируемые выражения. Каждое из них представляет собой пару фигурных скобок, между которыми помещено любое выражение языка С#. Чтобы сразу кое-что прояснить, приведем пример кода:
int числитель = 5, знаменатель = 3;
string report = $" Дробь: {числитель}/{знаменатель} равна «.
+ $" {^оиЬ1е)числитель/знаменатель: F4}" ;
Console.WriteLine (report);
На консольный экран будет выведено:
Дробь: 5/3 равна 1,6667.
В коде значение переменной string report определяют две интерполируемых строки, соединенные знаком конкатенации. В первой из названных строк два интерполируемых выражения, каждое из которых при обработке заменяется значением соответствующей целочисленной переменной числитель и знаменатель. Во второй строке интерполируемое выражение более сложное. С его помощью вычисляется вещественное значение дроби, к которому затем применяется форматная строка «F4». Интерполируемое выражение отделяется от форматной строки двоеточием.
Отметим некоторые особенности механизма интерполируемых строк. Каждая интерполируемая строка должна размещаться в одной строке кода (без переносов). В интерполируемую строку можно включать эскейп-последовательности.
Чтобы включить в интерполируемую строку символы '{' или не входящие в интерполируемые выражения, каждый из таких символов фигурной скобки необходимо дублировать.
Строковый литерал, входящий в интерполируемую строку, может быть буквальным. В этом случае символ $ должен размещаться перед символом @.
Подчеркнем, что в интерполируемые выражения можно помещать любые выражения, допустимые в языке С#. Кроме того, значения выражений можно очень гибко форматировать. Например, можно задавать ширину поля и выравнивание изображения интерполируемого выражения.