Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CSharp_Prog_Guide.doc
Скачиваний:
16
Добавлен:
16.11.2019
Размер:
6.22 Mб
Скачать

Разделители секций и условное форматирование20

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

Число секций

Описание

Одна секция

Строка форматирования применяется ко всем значениям.

Две секции

Первая секция применяется для положительных значений и нулей, вторая секция применяется для отрицательных значений.

Если форматируемое число является отрицательным, но становится нулем в результате округления в соответствии с форматированием, то ноль форматируется в соответствии с первой секцией.

Три секции

Первая секция применяется для положительных значений, вторая секция применяется для отрицательных значений, а третья — для нулей.

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

Если форматируемое число является ненулевым, но становится нулем в результате округления в соответствии с форматированием в первой или второй секции, то ноль форматируется в соответствии с третьей секцией.

При форматировании конечного значения разделители секций игнорируют любое существовавшее ранее форматирование, связанное с числом. Например, при использовании разделителей секций отрицательные значения всегда отображаются без знака "минус". Чтобы конечное отформатированное значение содержало знак "минус", его следует явным образом включить в настраиваемый спецификатор формата.

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

double MyPos = 19.95, MyNeg = -19.95, MyZero = 0.0;

// In the U.S. English culture, MyString has the value: $19.95.

string MyString = MyPos.ToString("$#,##0.00;($#,##0.00);Zero");

// In the U.S. English culture, MyString has the value: ($19.95).

// The minus sign is omitted by default.

MyString = MyNeg.ToString("$#,##0.00;($#,##0.00);Zero");

// In the U.S. English culture, MyString has the value: Zero.

MyString = MyZero.ToString("$#,##0.00;($#,##0.00);Zero");

Two Custom Format Examples

The following code fragments demonstrate custom numeric formatting. In both cases the digit placeholder (#) in the custom format string displays the numeric data, and all other characters are copied to the output.

Double myDouble = 1234567890;

String myString = myDouble.ToString( "(###) ### - ####" );

// The value of myString is "(123) 456 – 7890".

int MyInt = 42;

MyString = MyInt.ToString( "My Number = #" );

// In the U.S. English culture, MyString has the value:

// "My Number = 42".

double MyPos = 19.95, MyNeg = -19.95, MyZero = 0.0;

// In the U.S. English culture, MyString has the value: $19.95.

string MyString = MyPos.ToString("$#,##0.00;($#,##0.00);Zero");

// In the U.S. English culture, MyString has the value: ($19.95).

// The minus sign is omitted by default.

MyString = MyNeg.ToString("$#,##0.00;($#,##0.00);Zero");

// In the U.S. English culture, MyString has the value: Zero.

MyString = MyZero.ToString("$#,##0.00;($#,##0.00);Zero");