Чтение онлайн

ЖАНРЫ

Язык программирования C#9 и платформа .NET5
Шрифт:

using System;

Console.WriteLine("***** Basic Console I/O *****");

GetUserData;

Console.ReadLine;

static void GetUserData

{

}

На заметку! В Visual Studio и Visual Studio Code поддерживается несколько "фрагментов кода", которые после своей активизации вставляют код. Фрагмент кода

cw
очень полезен в начальных главах книги, т.к. он автоматически разворачивается в вызов
метода
Console.WriteLine
. Чтобы удостовериться в этом, введите
cw
где-нибудь в своем коде и нажмите клавишу <ТаЬ>. Имейте в виду, что в Visual Studio Code клавишу <Tab> необходимо нажать один раз, а в Visual Studio — два раза.

Теперь поместите после операторов верхнего уровня реализацию метода

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

static void GetUserData

{

// Получить информацию об имени и возрасте.

Console.Write("Please enter your name: "); // Предложить ввести имя

string userName = Console.ReadLine;

Console.Write("Please enter your age: "); // Предложить ввести возраст

string userAge = Console.ReadLine;

// Просто ради забавы изменить цвет переднего плана.

ConsoleColor prevColor = Console.ForegroundColor;

Console.ForegroundColor = ConsoleColor.Yellow;

// Вывести полученную информацию на консоль.

Console.WriteLine("Hello {0}! You are {1} years old.",

userName, userAge);

// Восстановить предыдущий цвет переднего плана.

Console.ForegroundColor = prevColor;

}

После запуска приложения входные данные будут совершенно предсказуемо выводиться в окно консоли (с использованием указанного специального цвета).

Форматирование консольного вывода

В ходе изучения нескольких начальных глав вы могли заметить, что внутри различных строковых литералов часто встречались такие конструкции, как

{0}
и
{1}
. Платформа .NET 5 поддерживает стиль форматирования строк, который немного напоминает стиль, применяемый в операторе
printf
языка С. Попросту говоря, когда вы определяете строковый литерал, содержащий сегменты данных, значения которых остаются неизвестными до этапа выполнения, то имеете возможность указывать заполнитель, используя синтаксис с фигурными скобками. Во время выполнения все заполнители замещаются значениями, передаваемыми методу
Console.WriteLine
.

Первый параметр метода

WriteLine
представляет строковый литерал, который содержит заполнители, определяемые с помощью
{0}
,
{1}
,
{2}
и т.д. Запомните, что порядковые числа заполнителей в фигурных скобках всегда начинаются с
0
. Остальные параметры
WriteLine
— это просто значения,
подлежащие вставке вместо соответствующих заполнителей.

На заметку! Если уникально нумерованных заполнителей больше, чем заполняющих аргументов, тогда во время выполнения будет сгенерировано исключение, связанное с форматом. Однако если количество заполняющих аргументов превышает число заполнителей, то лишние аргументы просто игнорируются.

Отдельный заполнитель допускается повторять внутри заданной строки. Например, если вы битломан и хотите построить строку

"9, Number 9, Number 9"
, тогда могли бы написать такой код:

// Джон говорит...

Console.WriteLine("{0}, Number {0}, Number {0}", 9);

Также вы должны знать о возможности помещения каждого заполнителя в любую позицию внутри строкового литерала. К тому же вовсе не обязательно, чтобы заполнители следовали в возрастающем порядке своих номеров, например:

// Выводит: 20, 10, 30

Console.WriteLine("{1}, {0}, {2}", 10, 20, 30);

Строки можно также форматировать с использованием интерполяции строк, которая рассматривается позже в главе.

Форматирование числовых данных

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

Символы форматирования добавляются к заполнителям в виде суффиксов после двоеточия (например,

{0:С}
,
{1:d}
,
{2:X}
). В целях иллюстрации измените метод
Main
для вызова нового вспомогательного метода по имени
FormatNumericalData
, реализация которого в классе
Program
форматирует фиксированное числовое значение несколькими способами.

// Демонстрация применения некоторых дескрипторов формата,

static void FormatNumericalData

{

Console.WriteLine("The value 99999 in various formats:");

Console.WriteLine("c format: {0:c}", 99999);

Console.WriteLine("d9 format: {0:d9}", 99999);

Console.WriteLine("f3 format: {0:f3}", 99999);

Console.WriteLine("n format: {0:n}", 99999);

// Обратите внимание, что использование для символа

// шестнадцатеричного формата верхнего или нижнего регистра

// определяет регистр отображаемых символов.

Console.WriteLine("E format: {0:E}", 99999);

Console.WriteLine("e format: {0:e}", 99999);

Console.WriteLine("X format: {0:X}", 99999);

Console.WriteLine("x format: {0:x}", 99999);

}

Ниже показан вывод, получаемый в результате вызова метода

FormatNumericalData
.

Поделиться с друзьями: