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

ЖАНРЫ

C# 4.0 полное руководство - 2011

Шилдт Герберт

Шрифт:

FFFFFF,

FFFFFFF

F обозначает точность представления, а остальные цифры отбрасываются и конечные нули не отображаются

В приведенной ниже программе демонстрируется форматирование объектов типа TimeSpan на примере отображения времени, которое приблизительно требуется для вывода на экран 1000 целых значений в цикле for.

// Отформатировать

объект типа TimeSpan.

using System;

class TimeSpanDemo { static void Main {

DateTime start = DateTime.Now;

// Вывести числа от 1 до 1000. for(int i = 1; i <= 1000; i++) {

Console.Write(i + " ");

if((i % 10) == 0) Console.WriteLine;

}

Console.WriteLine;

DateTime end = DateTime.Now;

TimeSpan span = end - start;

Console.WriteLine("Время выполнения: {0:c}", span);

Console.WriteLine("Время выполнения: {0:g}", span);

Console.WriteLine("Время выполнения: {0:G}", span);

Console.WriteLine("Время выполнения: 0.{0:fff} секунды", span);

}

}

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

981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 Время выполнения: 00:00:00.0140000 Время выполнения: 0:00:00.014 Время выполнения: 0:00:00:00.0140000 Время выполнения: 0.014 секунды

Форматирование перечислений

В C# допускается также форматировать значения, определяемые в перечислении. Вообще говоря, значения из перечисления могут отображаться как по имени, так и по значению. Спецификаторы формата перечислений сведены в табл. ”22.10. Обратите особое внимание на форматы G и F. Перед перечислениями, которые должны представлять битовые поля, следует указывать атрибут Flags. Как правило, в битовых полях хранятся значения, обозначающие отдельные двоичные разряды и упорядоченные по степени числа 2. При наличии атрибута Flags имена всех битовых составляющих форматируемого значения, если, конечно, это действительное значение, отображаются с помощью спецификатора G. А с помощью спецификатора F отображаются имена всех битовых составляющих форматируемого значения, если оно составляется путем логического сложения по ИЛИ двух или более полей, определяемых в перечислении.

Таблица 22.10. Спецификаторы формата перечислений Спецификатор Назначение

D Отображает значение в виде десятичного целого числа

d То же, что и D

F Отображает имя значения. Если это значение можно создать путем логиче

ского сложения по ИДИ двух или более полей, определенных в перечислении, то данный спецификатор отображает имена всех

битовых составляющих заданного значения, причем независимо оттого, задан атрибут Flags или нет

f То же, что и F

G Отображает имя значения. Если перед форматируемым перечислением ука

зывается атрибут Flags, то данный спецификатор отображает имена всех битовых составляющих заданного значения, если, конечно, это допустимое значение g То же, что и G

X Отображает значение в виде шестнадцатеричного целого числа. Для отобра

жения как минимум восьми цифр форматируемое значение дополняется (при необходимости) начальными нулями х_То же, что и X_

В приведенной ниже программе демонстрируется применение спецификаторов формата перечислений.

// Отформатировать перечисление.

using System;

class EnumFmtDemo {

enum Direction { North, South, East, West }

[Flags] enum Status { Ready=0xl, OffLine=Ox2,

Waiting=0x4, TransmitOK=Ox8,

ReceiveOK=OxlO, OnLine=0x20 }

static void Main {

Direction d = Direction.West;

Console.WriteLine("{0:G}", d);

Console.WriteLine("{0:F}", d); 1

Console.WriteLine("{0:D}", d);

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

Status s = Status.Ready | Status.TransmitOK;

Console.WriteLine("{0:G}", s);

Console.WriteLine("{0:F}", s);

Console.WriteLine("{0:D}", s);

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

}

}

Ниже приведен результат выполнения этой программы.

West

West

3

00000003

Ready, TransmitOK Ready, TransmitOK 9

ГЛАВА 23 Многопоточное программирование. Часть первая: основы

Среди многих замечательных свойств языка C# особое место принадлежит поддержке многопоточного программирования. Многопоточная программа состоит из двух или более частей, выполняемых параллельно. Каждая часть такой программы называется потоком и определяет отдельный путь выполнения команд. Таким образом, многопоточная обработка является особой формой многозадачности.

Многопоточное программирование опирается на целый ряд средств, предусмотренных для этой цели в самом языке С#, а также на классы, определенные в среде .NET Framework. Благодаря встроенной в C# поддержке многопоточной обработки сводятся к минимуму или вообще устраняются многие трудности, связанные с организацией многопоточной обработки в других языках программирования. Как станет ясно из дальнейшего, поддержка в C# многопоточной обработки четко организована и проста для понимания.

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