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

на главную

Жанры

Полное руководство. С# 4.0
Шрифт:

Таблица 21.5. Методы, поддерживаемые структурой Double Метод Назначение public int CompareTo(object value) Сравнивает числовое значение вызывающего объекта со значением value. Возвращает нуль, если сравниваемые значения равны; отрицательное число, если вызывающий объект имеет меньшее значение, и, наконец, положительное значение, если вызывающий объект имеет большее значение public int CompareTo(double value) Сравнивает числовое значение вызывающего объекта со значением value. Возвращает нуль, если сравниваемые значения равны; отрицательное число, если вызывающий объект имеет меньшее значение, и, наконец, положительное значение, если вызывающий объект имеет большее значение public override bool Equals(object obj) Возвращает логическое значение true, если значение вызывающего объекта равно значению obj public bool Equals(double obj) Возвращает логическое значение true, если значение вызывающего объекта равно значению obj public override int GetHashCode Возвращает хеш-код для вызывающего объекта public TypeCode GetTypeCode Возвращает значение из перечисления TypeCode для структуры Double, т.е. TypeCode.Double public static bool IsInfinity(double d) Возвращает логическое значение true, если значение d представляет плюс или минус бесконечность. В противном случае возвращает логическое значение false public static bool IsNaN(double d) Возвращает логическое значение true, если значение d не является числовым. В противном случае возвращает логическое значение false public static bool IsPositiveInfinity(double d) Возвращает логическое значение true, если значение d представляет плюс бесконечность. В противном случае возвращает логическое значение false public static bool IsNegativeInfinity(double d) Возвращает логическое значение true, если значение d представляет минус бесконечность. В противном случае возвращает логическое значение false public static double Parse(string s) Возвращает двоичный эквивалент

числа, заданного в виде символьной строки s. Если в строке не представлено числовое значение типа double, то генерируется исключение public static double Parse(string s, IFormatProvider provider) Возвращает двоичный эквивалент числа, заданного в виде символьной строки s, с использованием форматов данных, характерных для конкретной культурной среды и определяемых параметром provider. Если в строке не представлено числовое значение типа double, то генерируется исключение public static double Parse(string s, NumberStyles styles) Возвращает двоичный эквивалент числа, заданного в виде символьной строки s, с использованием данных о стилях, определяемых параметром styles. Если в строке не представлено числовое значение типа double, то генерируется исключение public static double Parse(string s, NumberStyles styles, IFormatProvider provider) Возвращает двоичный эквивалент числа, заданного в виде символьной строки s, с использованием форматов данных, характерных для конкретной культурной среды и определяемых параметром provider, а также данных о стилях, обозначаемых параметром styles. Если в строке не представлено числовое значение типа double, то генерируется исключение public override string ToString Возвращает строковое представление значения вызывающего объекта public string ToString(string format) Возвращает строковое представление значения вызывающего объекта, как указано в форматирующей строке, определяемой параметром format public string ToString(IformatProvider provider) Возвращает строковое представление значения вызывающего объекта с использованием форматов данных, характерных для конкретной культурной среды и определяемых параметром provider public string ToString(string format, IformatProvider provider) Возвращает строковое представление значения вызывающего объекта, как указано в форматирующей строке, определяемой параметром format, но с использованием форматов данных, характерных для конкретной культурной среды и определяемых параметром provider public static bool TryParse(string s, out double result) Предпринимает попытку преобразовать число, заданное в виде символьной строки s, в значение типа double. При успешной попытке это значение сохраняется в параметре result и возвращается логическое значение true, а иначе возвращается логическое значение false, в отличие от метода Parse, который генерирует исключение при неудачном исходе преобразования public static bool TryParse(string s, NumberStyles styles, IFormatProvider provider, out double result) Предпринимает попытку преобразовать числовое значение, заданное в виде символьной строки s, в значение типа double, как указано в форматирующей строке, определяемой параметром format, но с использованием форматов данных, характерных для конкретной культурной среды и определяемых параметром provider, а также сведений о стилях, обозначаемых параметром styles. При успешной попытке это значение сохраняется в параметре result и возвращается логическое значение true, а иначе возвращается логическое значение false, в отличие от метода Parse, который генерирует исключение при неудачном исходе преобразования

Таблица 21.6. Поля, поддерживаемые структурой Double Поле Назначение public const double Epsilon Наименьшее ненулевое положительное значение public const double MaxValue Наибольшее значение, допустимое для данных типа double public const double MinValue Наименьшее значение, допустимое для данных типа double public const double NaN Значение, не являющееся числом public const double NegativeInfinity Значение, представляющее минус бесконечность public const double PositiveInfinity Значение, представляющее плюс бесконечность Структура Decimal

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

В структуре Decimal определено восемь открытых конструкторов. Ниже приведе ны шесть наиболее часто используемых из них. public Decimal(int значение) public Decimal(uint значение) public Decimal(long значение) public Decimal(ulong значение) public Decimal(float значение) public Decimal(double значение)

Каждый из этих конструкторов создает объект типа Decimal из значения указан ного типа.

Кроме того, объект типа Decimal может быть создан из отдельно указываемых со ставляющих с помощью следующего конструктора. public Decimal (int lo, int mid, int hi, bool IsNegative, byte scale)

Десятичное значение состоит из трех частей. Первую часть составляет 96-разрядное целое значение, вторую — флаг знака, третью — масштабный коэффициент. В част ности, 96-разрядное целое значение передается конструктору тремя 32-разрядными фрагментами с помощью параметров lo, mid и hi; знак флага — с помощью пара метра IsNegative, причем логическое значение false этого параметра обозначает положительное число, тогда как логическое значение true обозначает отрицательное число; а масштабный коэффициент — с помощью параметра scale, принимающего значения от 0 до 28. Этот коэффициент обозначает степень числа 10 (т.е. 10scale), на ко торую делится число для получения его дробной части.

Вместо того чтобы передавать каждую составляющую объекта типа Decimal от дельно, все его составляющие можно указать в массиве, используя следующий кон структор. public Decimal(int[] bits)

Три первых элемента типа int в массиве bits содержат 96-разрядное целое значе ние; 31-й разряд содержимого элемента bits[3] обозначает флаг знака (0 — положи тельное число, 1 — отрицательное число); а в разрядах 16-23 содержится масштабный коэффициент.

В структуре Decimal реализуются следующие интерфейсы: IComparable, IComparable<decimal>, IConvertible, IFormattable, IEquatable<decimal>, а также IDeserializationCallback.

В приведенном ниже примере программы значение типа decimal формируется вручную. // Сформировать десятичное число вручную. using System; class CreateDec { static void Main { decimal d = new decimal(12345, 0, 0, false, 2); Console.WriteLine(d); } }

Эта программа дает следующий результат. 123.45

В данном примере значение 96-разрядного целого числа равно 12345. У него поло жительный знак и два десятичных разряда в дробной части.

Методы, определенные в структуре Decimal, приведены в табл. 21.7, а поля — в табл. 21.8. Кроме того, в структуре Decimal определяется обширный ряд операторов и преобразований, позволяющих использовать десятичные значения вместе со значе ниями других типов в выражениях. Правила, устанавливающие порядок присваивания десятичных значений и их применения в выражениях, представлены в главе 3.

Таблица 21.7. Методы, определенные в структуре Decimal Метод Назначение public static decimal Add(decimal d1, decimal d2) Возвращает значение d1 + d2 public static decimal Ceiling(d) Возвращает наименьшее целое, которое представлено в виде значения типа decimal и не меньше d. Так, если d равно 1,02, метод Ceiling возвращает значение 2,0. А если d равно -1,02, то метод Ceiling возвращает значение -1 public static int Compare(decimal d1, decimal d2) Сравнивает числовое значение d1 со значением d2. Возвращает нуль, если сравниваемые значения равны; отрицательное значение, если d1 меньше d2; и, наконец, положительное значение, если d1 больше d2 public int CompareTo(object value) Сравнивает числовое значение вызывающего объекта со значением value. Возвращает нуль, если сравниваемые значения равны; отрицательное значение, если вызывающий объект имеет меньшее значение; и, наконец, положительное значение, если вызывающий объект имеет большее значение public int CompareTo(decimal value) Сравнивает числовое значение вызывающего объекта со значением value. Возвращает нуль, если сравниваемые значения равны; отрицательное значение, если вызывающий объект имеет меньшее значение; и, наконец, положительное значение, если вызывающий объект имеет большее значение public static decimal Divide(decimal d1, decimal d2) Возвращает частное от деления d1 / d2 public bool Equals(decimal value) Возвращает логическое значение true, если значение вызывающего объекта равно значению value public override bool Equals(object value) Возвращает логическое значение true, если значение вызывающего объекта равно значению value public static bool Equals(decimal d1, decimal d2) Возвращает логическое значение true, если если d1 равно d2 public static decimal Floor (decimal d) Возвращает наибольшее целое, которое представлено в виде значения типа decimal и не больше d Так, если d равно 1,02, метод Floor возвращает значение 1,0. А если d равно -1,02, метод Floor возвращает значение -2 public static decimal FromOACurrency(long cy) Преобразует значение су из формата денежной единицы, применяемого в компоненте OLE Automation, в его десятичный эквивалент и возвращает полученный результат public static int[] GetBits(decimal d) Возвращает двоичное представление значения d в виде массива типа int. Организация этого массива описана в тексте настоящего раздела public override int GetHashCode Возвращает хеш-код для вызывающего объекта public TypeCode GetTypeCode Возвращает значение из перечисления TypeCode для структуры Decimal, т.е. TypeCode.Decimal public static decimal Multiply(decimal d1, decimal d2) Возвращает произведение d1 * d2 public static decimal Negate(decimal d) Возвращает значение -d public static decimal Parse(string s) Возвращает двоичный эквивалент числа, заданного в виде символьной строки s. Если в строке не представлено числовое значение типа decimal, то генерируется исключение public static decimal Parse(string s, IFormatProvider provider) Возвращает двоичный эквивалент числа, заданного в виде символьной строки s, с использованием форматов данных, характерных для конкретной культурной среды и определяемых параметром provider. Если в строке не представлено числовое значение типа decimal, то генерируется исключение public static decimal Parse (string s, NumberStyles styles) Возвращает двоичный эквивалент числа, заданного в виде символьной строки s, с использованием данных о стилях, определяемых параметром styles. Если в строке не представлено числовое значение типа decimal, то генерируется исключение public static decimal Parse (string s, NumberStyles styles, IformatProvider provider) Возвращает двоичный эквивалент числа, заданного в виде символьной строки s, с использованием форматов данных, характерных для конкретной культурной среды и определяемых параметром provider, а также данных о стилях, обозначаемых параметром styles. Если в строке не представлено числовое значение типа decimal, то генерируется исключение public static decimal Remainder(decimal d1, decimal d2) Возвращает остаток от целочисленного деления d1 / d2 public static decimal Round(decimal d) Возвращает значение d, округленное до ближайшего целого числа public static decimal Round(decimal d, int decimals) Возвращает значение d, округленное до числа с количеством цифр в дробной части, равным значению параметра decimals, которое должно находиться в пределах от 0 до 28 public static decimal Round(decimal d, MidPoihtRounding mode) Возвращает значение d, округленное до ближайшего целого числа в режиме, определяемом параметром mode. Режим округления применяется лишь в том случае, если значение d оказывается посредине между двумя целыми числами public static decimal Round(decimal d, int decimals, MidPointRounding mode) Возвращает значение d, округленное до числа с количеством цифр в дробной части, равным значению параметра decimals, которое должно находиться в пределах от 0 до 28, а параметр mode определяет режим округления. Режим округления применяется лишь в том случае, если значение d оказывается посредине между двумя округляемыми числами public static decimal Subtract(decimal d1, decimal d2) Возвращает разность d1 - d2 public static byte ToByte(decimal value) Возвращает эквивалент значения value типа byte. Дробная часть отбрасывается. Если значение value оказывается вне диапазона представления чисел для типа byte, то генерируется исключение OverflowException public static double ToDouble(decimal d) Возвращает эквивалент значения d типа double. При этом возможна потеря точности, поскольку у значения типа double меньше значащих цифр, чем у значения типа decimal public static short ToInt16(decimal d) Возвращает эквивалент значения d типа short. Дробная часть отбрасывается. Если значение d оказывается вне диапазона представления чисел для типа short, то генерируется исключение OverflowException public static int ToInt32(decimal d) Возвращает эквивалент значения d типа int. Дробная часть отбрасывается. Если значение d оказывается вне диапазона представления чисел для типа int, то генерируется исключение OverflowException public static long ToInt64(decimal d) Возвращает эквивалент значения d типа long. Дробная часть отбрасывается. Если значение d оказывается вне диапазона представления чисел для типа long, то генерируется исключение OverflowException public static long ToOACurrency(decimal value) Преобразует значение value в его эквивалент формата денежной единицы, применяемого в компоненте OLE Automation, и возвращает полученный результат public static sbyte ToSByte(decimal value) Возвращает эквивалент значения value типа sbyte. Дробная часть отбрасывается. Если значение value оказывается вне диапазона представления чисел для типа sbyte, то генерируется исключение OverflowException public static float ToSingle(decimal d) Возвращает эквивалент значения d типа float. Дробная часть отбрасывается. Если значение d оказывается вне диапазона представления чисел для типа float, то генерируется исключение OverflowException public override string ToString Возвращает строковое представление значения вызывающего объекта в используемом по умолчанию формате public string ToString(string format) Возвращает строковое представление значения вызывающего объекта, как указано в форматирующей строке, определяемой параметром format public string ToString(IFormatProvider provider) Возвращает строковое представление значения вызывающего объекта с использованием форматов данных, характерных для конкретной культурной среды и определяемых параметром provider public string ToString(string format, IFormatProvider provider) Возвращает строковое представление значения вызывающего объекта, как указано в форматирующей строке, определяемой параметром format, но с использованием форматов данных, характерных для конкретной культурной среды и определяемых параметром provider public static ushort ToUInt16(decimal value) Возвращает эквивалент значения value типа ushort. Дробная часть отбрасывается. Если значение value оказывается вне диапазона представления чисел для типа ushort, то генерируется исключение OverflowException public static uint ToUInt32(decimal d) Возвращает эквивалент значения d типа uint. Дробная часть отбрасывается. Если значение d оказывается вне диапазона представления чисел для типа uint, то генерируется исключение OverflowException public static ulong ToUInt64(decimal d) Возвращает эквивалент значения d типа ulong. Дробная часть отбрасывается. Если значение d оказывается вне диапазона представления чисел для типа ulong, то генерируется исключение OverflowException public static decimal Truncate(decimal d) Возвращает целую часть числа d. Дробная часть отбрасывается public static bool TryParse(string s, out decimal result) Предпринимает попытку преобразовать числовое значение, заданное в виде символьной строки s, в значение типа decimal. При успешной попытке это значение сохраняется в параметре result и возвращается логическое значение true. В противном случае возвращается логическое значение false, в отличие от метода Parse, который генерирует исключение при неудачном исходе преобразования public static bool TryParse(string s, NumberStyles styles, IFormatProvider provider, out decimal result) Предпринимает попытку преобразовать числовое значение, заданное в виде символьной строки s, в значение типа decimal, как указано в форматирующей строке, определяемой параметром format, но с использованием форматов данных, характерных для конкретной культурной среды и определяемых параметром provider, а также сведений о стилях, обозначаемых параметром styles. При успешной попытке это значение сохраняется в параметре result и возвращается логическое значение true. В противном случае возвращается логическое значение false, в отличие от метода Parse, который генерирует исключение при неудачном исходе преобразования

Таблица 21.8. Поля, поддерживаемые структурой Decimal Поле Назначение public static readonly decimal MaxValue Наибольшее значение, допустимое для данных типа decimal public static readonly decimal MinusOne Представление числа -1 в виде значения типа decimal public static readonly decimal MinValue Наименьшее значение, допустимое для данных типа decimal public static readonly decimal One Представление числа 1 в виде значения типа decimal public static readonly decimal Zero Представление числа 0 в виде значения типа decimal Структура Char

Структура Char соответствует типу char и применяется довольно часто, посколь ку предоставляет немало методов, позволяющих обрабатывать символы и распреде лять их по отдельным категориям. Например, символ строчной буквы можно преоб разовать в символ прописной буквы, вызвав метод ToUpper, а с помощью метода IsDigit можно определить, обозначает ли символ цифру.

Методы, определенные в структуре Char, приведены в табл. 21.9. Следует, од нако, иметь в виду, что некоторые методы, например ConvertFromUtf32 и ConvertToUtf32, позволяют обрабатывать символы уникода в форматах UTF-16 и UTF-32. Раньше все символы уникода могли быть представлены 16 разрядами, что соответствует величине значения типа char. Но несколько лет назад набор символов уникода был расширен, для чего потребовалось более 16 разрядов. Каждый символ уникода представлен кодовой точкой, а способ кодирования кодовой точки зависит от используемого формата преобразования уникода (UTF). Так, в формате UTF-16 для кодирования большинства кодовых точек требуется одно 16-разрядное значение, а для кодирования остальных кодовых точек — два 16-разрядных значения. Если для этой цели требуются два 16-разрядных значения, то для их представления служат два зна чения типа char. Первое символьное значение называется старшим суррогатом, а вто рое — младшим суррогатом. В формате UTF-32 каждая кодовая точка кодируется с по мощью одного 32-разрядного значения. В структуре Char предоставляются все необхо димые средства для преобразования из формата UTF-16 в формат UTF-32 и обратно.

В отношении методов структуры Char необходимо также отметить следующее: в используемых по умолчанию формах методов ToUpper и ToLower применя ются текущие настройки культурной среды (языки и региональные стандарты), чтобы указать способ представления символов верхнего и нижнего регистра. На момент на писания этой книги рекомендовалось явно указывать текущие настройки культурной среды, используя для этой цели параметр типа CultureInfo во второй форме обоих упоминаемых методов. Класс CultureInfo относится к пространству имен System. Globalization, а для указания текущей культурной среды следует передать свойство CultureInfo.CurrentCulture соответствующему методу.

Поделиться:
Популярные книги

Академия проклятий. Книги 1 - 7

Звездная Елена
Академия Проклятий
Фантастика:
фэнтези
8.98
рейтинг книги
Академия проклятий. Книги 1 - 7

Проводник

Кораблев Родион
2. Другая сторона
Фантастика:
боевая фантастика
рпг
7.41
рейтинг книги
Проводник

Последний попаданец 2

Зубов Константин
2. Последний попаданец
Фантастика:
юмористическая фантастика
попаданцы
рпг
7.50
рейтинг книги
Последний попаданец 2

Дурная жена неверного дракона

Ганова Алиса
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Дурная жена неверного дракона

Эфемер

Прокофьев Роман Юрьевич
7. Стеллар
Фантастика:
боевая фантастика
рпг
7.23
рейтинг книги
Эфемер

Морозная гряда. Первый пояс

Игнатов Михаил Павлович
3. Путь
Фантастика:
фэнтези
7.91
рейтинг книги
Морозная гряда. Первый пояс

АН (цикл 11 книг)

Тарс Элиан
Аномальный наследник
Фантастика:
фэнтези
героическая фантастика
попаданцы
аниме
5.00
рейтинг книги
АН (цикл 11 книг)

Сирота

Ланцов Михаил Алексеевич
1. Помещик
Фантастика:
альтернативная история
5.71
рейтинг книги
Сирота

Лорд Системы 11

Токсик Саша
11. Лорд Системы
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Лорд Системы 11

Идущий в тени 4

Амврелий Марк
4. Идущий в тени
Фантастика:
боевая фантастика
6.58
рейтинг книги
Идущий в тени 4

Мастер 6

Чащин Валерий
6. Мастер
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Мастер 6

На границе империй. Том 7

INDIGO
7. Фортуна дама переменчивая
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
6.75
рейтинг книги
На границе империй. Том 7

Восход. Солнцев. Книга V

Скабер Артемий
5. Голос Бога
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Восход. Солнцев. Книга V

Сумеречный стрелок 6

Карелин Сергей Витальевич
6. Сумеречный стрелок
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Сумеречный стрелок 6