Шаг 14.
Язык программирования C#. Начала
Знакомство с языком C#. Форматированный вывод

    На этом шаге мы рассмотрим особенности использования методов WriteLine() и Write().

    Сделаем небольшой комментарий относительно использования методов WriteLine() и Write(). Мы уже знаем, что методы предназначены для отображения в консольном окне значения, переданного аргументом методу.


Напомним, что разница между методами WriteLine() и Write() состоит в том, что при использовании метода WriteLine() после отображения значения в консольном окне выполняется автоматический переход к новой строке. При использовании метода Write() такой переход не выполняется.

    Но аргументы методу Write() или WriteLine() можно передавать и несколько иначе. Первым аргументом передается текстовая строка. Эта строка содержит специальные блоки инструкций, которые будем называть блоками форматирования. В самом простом случае блок форматирования представляет собой пару фигурных скобок с целочисленным индексом внутри: например {0}, {1}, {2} и так далее. После текстовой строки с блоками форматирования через запятую указываются значения, которые должны быть вставлены вместо блоков форматирования при отображении строки в консоли. Допустим, мы используем команду вида

  WriteLine ("Значения {0}, {1} и {2}", А, В, С).
В таком случае в консольном окне отображается текст "Значения {0}, {1} и {2}", но только вместо блока {0} вставляется значение переменной А, вместо блока {1} вставляется значение переменной В, а вместо блока {2} будет вставлено значение переменной С. Фактически индекс в фигурных скобках это индекс аргумента из списка аргументов, указанных после текстовой строки (первый по порядку элемент после текстовой строки имеет нулевой индекс). В текстовой строке ссылку на один и тот же аргумент можно выполнять несколько раз.


Допускается, чтобы переменные или выражения, указанные после первого текстового аргумента в методе WriteLine() или Write(), были разного типа.

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

  {индекс, ширина: формат}

    Сначала в фигурных скобках указывается индекс аргумента, который подставляется в соответствующее место при отображении строки. Через запятую после индекса указывается целое число, определяющее ширину поля, выделяемую для отображения значения аргумента. Положительное число означает выравнивание содержимого по правому краю, а отрицательное число означает выравнивание содержимого по левому краю. Также через двоеточие можно указать инструкцию, определяющую способ (формат) отображения значения аргумента. Для определения формата отображения числового значения используют символ #, обозначающий цифру. Символ X используют как индикатор для отображения числа в шестнадцатеричном формате, символ Е является индикатором для использования экспоненциального формата, символ N используют как индикатор десятичного числа, символ С позволяет применять денежный формат. Например, инструкция

  {0,20:#.##} 
означает, что при отображении первого аргумента (аргумента с нулевым индексом) следует использовать поле шириной в 20 символов (не меньше) и выравниваться значение будет по правому краю (поскольку ширина поля задана положительным числом). Код #.## означает, что в дробной части числа будет отображаться не больше двух цифр. Если мы хотим, чтобы параметры отображения были те же, но выравнивание выполнялось полевому полю, то используем код
  {0,-20:#.##} 
(ширина поля определяется отрицательным числом). Блок {0: Е} означает, что число отображается в экспоненциальном формате, а для использования шестнадцатеричного формата отображения числа используем блок {0: X}. Далее по мере необходимости мы еще будем возвращаться к этому вопросу и комментировать способ передачи аргументов методам Write() и WriteLine().

    На следующем шаге мы подведем некоторые итоги.




Предыдущий шаг Содержание Следующий шаг