В первом операторе вызова метода WriteLine()
один и тот же аргумент 10.12345
форматируется тремя разными способами. Это вполне допустимо, поскольку каждый спецификатор формата в этом вызове обозначает первый и единственный аргумент. А во втором вызове метода WriteLine()
три аргумента отображаются не по порядку. Не следует забывать, что каких-то особых правил, предписывающих обозначать аргументы в спецификаторах формата в определенной последовательности, не существует. Любой спецификатор формата может обозначать какой угодно аргумент.
Применение методов String. Format() и ToString() для форматирования данных
Несмотря на все удобства встраивания команд форматирования выводимых данных в вызовы метода WriteLine()
, иногда все же требуется сформировать строку, содержащую отформатированные данные, но не отображать ее сразу. Это дает возможность отформатировать данные заранее, чтобы вывести их в дальнейшем на выбранное устройство. Такая возможность особенно полезна для организации работы в среде с графическим пользовательским интерфейсом, подобной Windows, где ввод-вывод на консоль применяется редко, а также для подготовки вывода на веб-страницу.
Вообще говоря, отформатированное строковое представление отдельного значения может быть получено двумя способами. Один из них состоит в применении метода String.Format()
, а другой — в передаче спецификатора формата методу ToString()
, относящемуся к одному из встроенных в C# числовых типов данных. Оба способа рассматриваются далее по порядку.
Для получения отформатированного значения достаточно вызвать метод Format(), определенный в классе String, в соответствующей его форме. Все формы этого метода перечислены в табл. 22.5. Метод Format() аналогичен методу WriteLine(), за исключением того, что он возвращает отформатированную строку, а не выводит ее на консоль.
Метод - Описание
public static string Format(string
public static string Format(string
public static string Format(string
public static string Format (string
public static string Format (IFormatProvider
Ниже приведен вариант предыдущего примера программы форматирования, измененный с целью продемонстрировать применение метода String.Format()
. Этот вариант дает такой же результат, как и предыдущий.
// Использовать метод String.Format() для форматирования значений,
using System;
class FormatDemo {
static void Main() {
double v = 17688.65849;
double v2 = 0.15;
int x = 21;
string str = String.Format("{0:F2}", v);
Console.WriteLine(str) ;
str = String.Format("{0:N5}", v);
Console.WriteLine(str);
str = String.Format("{0:e}", v);
Console.WriteLine(str);
str = String.Format("{0:r}", v);
Console.WriteLine(str);