Разработка приложений на языке C#. Полезные настройки. Особые спецификаторы формата, страница 5

Спецификатор

Формат

Имя шаблона

D

MM/dd/yyyy

ShortDataPattern

D

dddd,MMMM dd,yyyy

LongDatePattern

F

dddd,MMMM dd,yyyy HH:mm

Full date and time (long date and short time)

F

dddd,MMMM dd,yyyy HH:mm:ss

FullDateTimePattern (long date and long time)

G

MM/dd/yyyy HH:mm

General (short date and short time)

G

MM/dd/yyyy HH:mm:ss

General (short date and long time)

M,M

MMMM dd

MonthDayPattern

r,R

ddd,dd MMM yyyy,HH':'mm':'ss 'GMT'

RFC1123Pattern

S

yyyy-MM-dd HH:mm:ss

SortableDateTimePattern (conforms to ISO 8601) using local time

T

HH:mm

ShortTimePattern

T

HH:mm:ss

LongTimePattern

U

yyyy-MM-dd HH:mm:ss

UniversalSortable­DateTimePattern (conforms to ISO 8601) using universal time

U

dddd,MMMM dd,yyyy,HH:mm:ss

UniversalSortable­DateTimePattern

y,Y

MMMM,yyyy

YearMonthPattern

DateTime dt = DateTime.Now;

Console.WriteLine ("{0}\nDate = {1}, Time = {2}\n", dt, dt.Date, dt.TimeOfDay);

DateTimeFormatInfo info = DateTimeFormatInfo.InvariantInfo;

Console.WriteLine (

  "\n\tD: " + dt.ToString ("D", info) +

  "\n\tf: " + dt.ToString ("f", info) +

  "\n\tF: " + dt.ToString ("F", info) +

  "\n\tg: " + dt.ToString ("g", info) +

  "\n\tG: " + dt.ToString ("G", info) +

  "\n\tm: " + dt.ToString ("m", info) +

  "\n\tr: " + dt.ToString ("r", info) +

  "\n\ts: " + dt.ToString ("s", info) +

  "\n\tt: " + dt.ToString ("t", info) +

  "\n\tT: " + dt.ToString ("T", info) +

  "\n\tu: " + dt.ToString ("u", info) +

  "\n\tU: " + dt.ToString ("U", info) +

  "\n\td: " + dt.ToString ("d", info) +

  "\n\ty: " + dt.ToString ("y", info) +

  "\n\tdd-MMM-yy: " + dt.ToString ("dd-MMM-yy", info) + "\n\n");

Console.Write ("\n[I]nvariant or [C]urrent Info: ");

info = Console.Read() == 'i' ?

DateTimeFormatInfo.InvariantInfo : DateTimeFormatInfo.CurrentInfo;

Console.WriteLine (dt.ToString (info));

Убедитесь на этом примере, а также с помощью документации MSDN, что Console.Read сильно отличается от Console.ReadLine.

Задание

Методом Ctrl+Drag&Drop скопируйте файл TestTypes в проект MyConsole и переименуйте его в TestSwap. Замените его содержимое так, чтобы он вызвал статический метод (Swap), который обменивает местами значения двух переменных типа decimal. Добавьте новый статический метод Swap в пространство класса Program (внутри файла TestSwap.cs).

Для обмена значенями вам придется передавать переменные по ссылке. Это делается с помощью ключевого слова ref (используйте его в двух местах). Проверьте работу двух новых методов, добавив вызов TestSwap в сложную схему нашего каркаса. Для этого измените Main и Menu.

Различия между статическим и обычным методами

Статический метод — это аналог глобальной функции. Метод Main обязан быть static для того, чтобы Windows смогла его запустить. Вы должны различать три способа запуска методов:

·  ClassName.Method(); Так запускают статический метод класса с именем ClassName.

·  obj.Method(); Так запускают обычный метод другого класса (из любого метода класса).

·  obj.Method(); Так запускают обычный метод класса (из статического метода своего же класса).

·  Method(); Так запускают статический метод (из любого метода своего же класса).

·  Method(); Так запускают обычный метод своего же класса (из обычного метода класса).

Как видите, в двух случаях должен быть предварительно создан объект obj, например,