netlib.narod.ru< Назад | Оглавление | Далее >

Консольный ввод-вывод

Пространства имен также играют важную роль в документировании .NET. Например, документацию по классу Console нужно искать в документации пространства имен System. Вы увидите, что WriteLine — не единственный метод вывода класса Console. Метод Write очень похож на WriteLine тем, что также осуществляет вывод на консоль. Отличие в том, что WriteLine завершает свой вывод возвратом каретки.

Имеется 18 описаний метода Write и 19 — метода WriteLine, каждое со своими параметрами. Такое использование нескольких версий одного и того же метода известно как перегрузка (overload). Компилятор обычно по количеству и типам передаваемых параметров может определить, какой из перегруженных методов нужно вызвать программе.

Следующая программа демонстрирует три разных способа вывода одной и той же информации.

ConsoleAdder.cs

  //--------------------------------------------------
  // ConsoleAdder.cs (C) 2001 by Charles Petzold
  //--------------------------------------------------
  using System;

  class ConsoleAdder
  {
      public static void Main()
      {
          int a = 1509;
          int b = 744;
          int c = a + b;

          Console.Write("Сумма ");
          Console.Write(a);
          Console.Write(" и ");
          Console.Write(b);
          Console.Write(" равна ");
          Console.WriteLine(c);

          Console.WriteLine("Сумма " + a + " и " + b + " равна " + c);

          Console.WriteLine("Сумма {0} и {1} равна {2}", a, b, c);
      }
  }

Программа выведет:

  Сумма 1509 и 744 равна 2253
  Сумма 1509 и 744 равна 2253
  Сумма 1509 и 744 равна 2253

Программистов, использующих язык С, обнадежит тот факт, что С# поддерживает знакомый тип int и не использует оператор присваивания :=, как Algol или Pascal.

В первом способе программа для показа строки использует вызываемые по отдельности методы Write и WriteLine, каждый из которых принимает один параметр. Write и WriteLine могут принимать параметры любых типов и преобразовывать их в строку для показа.

Во втором способе применяется техника, непривычная для программистов на С, зато хорошо знакомая программистам на BASIC, — конкатенация строк при помощи знака «+». С# преобразует переменные в строки, объединяет все строки в единое целое и передает результат в функцию WriteLine. В третьем способе используется строка форматирования с тремя полями подстановки — {0}, {1} и {2} — для трех других параметров. Поля подстановки могут содержать дополнительную информацию для форматирования. Скажем, {0:С} представляет число как денежную сумму: показывается знак доллара (или другой символ валюты в зависимоcти от региональных параметров ОС), запятая, два десятичных знака, если число отрицательное, то строка заключается в скобки. Поле подстановки {0:-Х8} показывает число в шестнадцатеричном виде, при необходимости дополняя его нулями до 8 знаков. Вот некоторые примеры спецификаций формата в применении к целому числу 12 345:


Различные спецификации формата в применении к целому числу 12345



Тип форматирования Код формата Результат

Currency (денежные суммы) C $12345.00
  C1 $12,345.0
  C7 $12,345.0000000
Decimal (десятичный) D 12345
  D1 12345
  D7 0012345
Exponential (экспоненциальный) E 1.234500E+004
  E1 1.2E+004
  E7 1.2345000E+004
Fixed point (с фиксированной точкой) F 12345.00
  F1 12345.0
  F7 12345.0000000
General (общий) G 12345
  G1 1E4
  G7 12345
Number (числовой) N 12,345.00
  N1 12,345.0
  N7 12,345.0000000
Percent (процент) P 1,234,500.00
  P1 1,234,500.0
  P7 1,234,500.0000000
Hexadecimal (шестнадцатеричный) X 3039
  X1 3039
  X7 0003039


Даже если вы не собираетесь использовать вывод на консоль при программировании для .NET, вполне вероятно, что эти спецификации формата пригодятся вам при работе с методом String.Format. Точно так же, как Console.Write и Console.WriteLine являются в .NET аналогами функции С printf, метод String.Format в .NET аналогичен функции sprintf.


netlib.narod.ru< Назад | Оглавление | Далее >

Сайт управляется системой uCoz