Эндрю Троелсен - ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3 е издание стр 25.

Шрифт
Фон

Чтобы проиллюстрировать основные возможности ввода-вывода класса Console, рассмотрим следующий метод Main(), который запрашивает у пользователя некоторую информацию и повторяет каждый элемент в потоке стандартного вывода. На рис 3.5 показан пример выполнения такой программы.

// Использование класса Console для ввода и вывода.

static void Main(string[] args) {

// Эхо для некоторых строк.

Console.Write("Введите свое имя: ");

string s = Console.ReadLine();

Console.WriteLine("Привет {0} ", s);

Console.Write("Укажите возpаст: ");

s = Console.ReadLine();

Console.WriteLine("Вам {0} год(а)/лет", s);

}

ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И...

Рис. 3.5. Ввод и вывод с помощью System.Console

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

В этих первых главах вы много раз видели в строковых литералах символы {0}, {1} и др. В .NET вводится новый стиль форматирования строк, немного напоминающий стиль функции printf() в C, но без загадочных флагов %d, %s и %с. Вот простой пример (соответствующий вывод показан на рис. 3.6).

static void Main(string[] args) {

...

int theInt = 90;

double theDouble = 9.99;

bool theBool = true;

// Код '\n' в строковых литералах выполняет вставку

// символа перехода на новую строку.

Console.WriteLine("Int равно {0}\nDouble равно {1}\nВооl равно {2}", theInt, theDouble, theBool);

}

ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И...

Рис. 3.6. Множество "пустышек" в строковых литералах

Первый параметр метода WriteLine() представляет собой строковый литерал, который содержит опции-заполнители, обозначенные {0}, {1}, {2} и т.д. (нумерация в фигурных скобках всегда начинается с нуля). Остальные параметры WriteLine() являются значениями, которые должны быть вставлены на место соответствующих заполнителей (в данном случае это theInt, theDouble и theBool).

Также следует знать о том, что метод WriteLine() перегружен, чтобы можно было указывать в качестве значения заполнителя массив объектов. Так, строкой формата следующего вида можно представить любое число элементов.

// Замена заполнителей элементами массива объектов.

object[] stuff = {"Эй", 20.9, 1, "Там", "83", 99.99933);

Console.WriteLine("Мусор: {0}, {1}, {2}, {3}, {4}, {5}", stuff);

Можно также повторять заполнитель в строке. Например, если вы являетесь поклонником Beatles и хотите построить строку "9, Number 9, Number 9", то можете написать следующее.

// Джон говорит,…

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

Замечание. Если имеется несоответствие между числом различных заполнителей в фигурных скобках и числом заполняющих их аргументов, то в среде выполнения генерируется исключение FormatException.

Флаги форматирования строк .NET

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

Таблица 3.3. Символы форматирования строк .NET

Символы форматирования строкОписание
C или сИспользуются для форматирования денежных значений. По умолчанию перед этим флагом будет размещаться символ локальной денежкой единицы (скажем, знак доллара [$] для U.S. English)
D или dИспользуются для форматирования десятичных чисел. Этот флаг также указывает минимальное число знаков, используемое для представления значения
Е или еИспользуются для представлений в экспоненциальном формате
F или fИспользуются для представления в формате с фиксированным разделителем
G или gОбозначают general (общий [формат]). Эти символы можно использовать для представления чисел в формате с фиксированным разделителем или в экспоненциальном формате
N или nИспользуются для базового числового форматирования (с разделением групп разрядов)
X или xИспользуются для представления в шестнадцатиричном формате. Если используется X (в верхнем регистре), то в шестнадцатиричном представлении используются символы верхнего регистра

Символы форматирования добавляются в виде суффикса к соответствующему заполнителю через двоеточие (например, {0:C}, {1:d}, {2:X} и т.д.). Предположим, что вы добавили в Main() следующий программный код.

// Используем некоторые дескрипторы формата.

static void Main(string[] args) {

Console.WriteLine("Формат C: {0:C}", 99989.987);

Console.WriteLine("Формат D9: {0:D9}", 99999);

Console.WriteLine("Формат E: {0:E}", 99999.76543);

Console.WriteLine("Формат F3: {0:F3}", 99999.9999);

Console.WriteLine("Формат N: {0:N}", 99999);

Console.WriteLine("Формат X: {0:X}", 99999);

Console.WriteLine("Фopмaт x: {0:x}", 99999);

}

Использование символов форматирования в .NET не ограничивается консольными приложениями. Те же флаги можно использовать в контексте статического метода String.Format(). Это может быть полезно тогда, когда в памяти нужно построить строку с числовыми значениями, подходящую для использования в приложениях любого типа (Windows Forms, ASP.NET, Web-сервисы XML и т.д.).

static void Main(string[] args) {

// Использование статического метода String.Format()

// для построения новой строки.

string formatStr;

formatStr = String.Format("Хотите получить {0:C} на свой счет?", 99989.987);

Console.WriteLine(formatStr);

}

На рис. 3.7 показан пример вывода данной программы.

Ваша оценка очень важна

0
Шрифт
Фон

Помогите Вашим друзьям узнать о библиотеке