Справочник по C# Герберт Шилдт ббк 32. 973. 26018 75 Ш57 удк 681 07 Издательский дом "Вильямс" Зав редакцией
Скачать 5.05 Mb.
|
Структуры целочисленных типов К структурам целочисленных типов относятся следующие: Byte SByte Int16 UInt16 Int32 UInt32 Int64 UInt64 Все эти структуры содержат одни и те же методы (см. табл. 19.2), которые отличаются лишь типом значения, возвращаемого методом Parse() . Метод Parse() возвращает значение типа, представленного соответствующей структурой. Например, для структуры Int32 метод Parse() возвращает значение типа int , а для структуры UInt16 — значение типа ushort . (Использование метода Parse() продемонстрировано в главе 14.) Кроме методов, перечисленных в табл. 19.2, структуры целочисленных типов также определяют следующие const -поля: MaxValue MinValue В каждой структуре эти поля содержат наибольшее и наименьшее значения, которые можно хранить с помощью типа, представленного конкретной структурой. Все структуры целочисленных типов реализуют следующие интерфейсы: IComparable , IConvertible и IFormattable Таблица 19.2. Методы, поддерживаемые структурами целочисленных типов Метод Описание public int CompareTo( object v ) Сравнивает числовое значение вызывающего объекта со значением параметра v . Возвращает нуль, если сравниваемые значения равны. Возвращает отрицательное число, если вызывающий объект имеет меньшее значение, и — положительное, если вызывающий объект имеет большее значение public override bool Equals( object v ) Возвращает значение ИСТИНА, если значение вызывающего объекта равно значению параметра v public override int GetHashCode() Возвращает хеш-код для вызывающего объекта public TypeCode GetTypeCode() Возвращает значение перечисления TypeCode для эквивалентного типа. Например, для структуры Int32 возвращает значение TypeCode.Int32 public static тип_возврата Parse( string str ) Возвращает двоичный эквивалент строкового представления числа, заданного в параметре str . Если содержимое строки не представляет числовое значение в соответствии с определением типа структуры, генерируется исключение public static тип_возврата Parse( string str , IFormatProvider fmtpvdr ) Возвращает двоичный эквивалент строкового представления числа, заданного в параметре str с использованием форматов данных (присущих конкретному естественному языку, диалекту или территориальному образованию), заданных посредством параметра fmtpvdr . Если содержимое строки не представляет числовое значение в соответствии с определением типа структуры, генерируется исключение Глава 19. Пространство имен System 511 Окончание табл. 19.2 Метод Описание public static тип_возврата Parse( string str , NumberStyles styles ) Возвращает двоичный эквивалент строкового представления числа, заданного в параметре str , с использованием информации стилевого характера, заданной в параметре styles . Если содержимое строки не представляет числовое значение в соответствии с определением типа структуры, генерируется исключение public static тип_возврата Parse( string str , NumberStyles styles , IFormatProvider fmtpvdr ) Возвращает двоичный эквивалент строкового представления числа, заданного в параметре str , с использованием информации стилевого характера, заданной в параметре styles , a также форматов данных (присущих конкретному естественному языку, диалекту или территориальному образованию), заданных посредством параметра fmtpvdr . Если содержимое строки не представляет числовое значение в соответствии с определением типа структуры, генерируется исключение public override string ToString() Возвращает строковое представление значения вызывающего объекта public string ToString( string format ) Возвращает строковое представление значения вызывающего объекта в соответствии с требованиями форматирующей строки, переданной в параметре format public string ToString( IFormatProvider fmtpvdr ) Возвращает строковое представление значения вызывающего объекта с использованием форматов данных (присущих конкретному естественному языку, диалекту или территориальному образованию), заданных посредством параметра fmtpvdr public string ToString( string format , IFormatProvider fmtpvdr ) Возвращает строковое представление значения вызывающего объекта с использованием форматов данных (присущих конкретному естественному языку, диалекту или территориальному образованию), заданных посредством параметра fmtpvdr , а также форматирующей строки, переданной в параметре format Структуры типов данных с плавающей точкой Определены только две структуры типов данных с плавающей точкой: Double и Single . Структура Single представляет тип float . Ее методы перечислены в табл. 19.3, а поля — в табл. 19.4. Структура Double представляет тип double . Ее методы перечислены в табл. 19.5, а поля — в табл. 19.6. Подобно структурам целочисленного типа, в вызовах методов Parse() или ToString() можно задавать форматы данных (присущие конкретному естественному языку, диалекту или территориальному образованию), а также форматирующую строку. Структуры типов данных с плавающей точкой реализуют следующие интерфейсы: IComparable , IConvertible и IFormattable Таблица 19.3. Методы, поддерживаемые структурой single Метод Описание public int CompareTo(object v ) Сравнивает числовое значение вызывающего объекта со значением параметра v . Возвращает нуль, если сравниваемые значения равны. Возвращает отрицательное число, если вызывающий объект имеет меньшее значение, и — положительное, если вызывающий объект имеет большее значение public override bool Equals(object v ) Возвращает значение ИСТИНА, если значение вызывающего объекта равно значению параметра v 512 Часть II. Библиотека C# Окончание табл. 19.3 Метод Описание public override int GetHashCode() Возвращает хеш-код для вызывающего объекта public TypeCode GetTypeCode() Возвращает значение перечисления TypeCode для структуры single , т.е. TypeCode.Single public static bool IsInfinity( float v ) Возвращает значение ИСТИНА, если значение v представляет бесконечность (со знаком "плюс" либо со знаком "минус"). В противном случае возвращает значение ЛОЖЬ public static bool IsNaN(float v ) Возвращает значение ИСТИНА, если значение v —не число. В противном случае возвращает значение ЛОЖЬ public static bool IsPositiveInfinity( float v ) Возвращает значение ИСТИНА, если значение v представляет бесконечность со знаком "плюс". В противном случае возвращает значение ЛОЖЬ public static bool IsNegativeInfinity( float v ) Возвращает значение ИСТИНА, если значение v представляет бесконечность со знаком "минус". В противном случае возвращает значение ЛОЖЬ public static float Parse( string str ) Возвращает двоичный эквивалент строкового представления числа, заданного в параметре str . Если содержимое строки не представляет значение типа float , генерируется исключение public static float Parse( string str , IFormatProvider fmtpvdr ) Возвращает двоичный эквивалент строкового представления числа, заданного в параметре str с использованием форматов данных (присущих конкретному естественному языку, диалекту или территориальному образованию), заданных посредством параметра fmtpvdr . Если содержимое строки не представляет значение типа float , генерируется исключение public static float Parse( string str , NumberStyles styles ) Возвращает двоичный эквивалент строкового представления числа, заданного в параметре str , с использованием информации стилевого характера, заданной в параметре styles . Если содержимое строки не представляет значение типа float , генерируется исключение public static float Parse( string str , NumberStyles styles , IFormatProvider Fmtpvdr ) Возвращает двоичный эквивалент строкового представления числа, заданного в параметре str , с использованием информации стилевого характера, заданной в параметре styles , a также форматов данных (присущих конкретному естественному языку, диалекту или территориальному образованию), заданных посредством параметра fmtpvdr . Если содержимое строки не представляет значение типа float , генерируется исключение public override string ToString() Возвращает строковое представление значения вызывающего объекта public string ToString( string format ) Возвращает строковое представление значения вызывающего объекта в соответствии с требованиями форматирующей строки, переданной в параметре format public string ToString( IFormatProvider fmtpvdr ) Возвращает строковое представление значения вызывающего объекта с использованием форматов данных (присущих конкретному естественному языку, диалекту или территориальному образованию), заданных посредством параметра fmtpvdr public string ToString( string format , IFormatProvider fmtpvdr ) Возвращает строковое представление значения вызывающего объекта с использованием форматов данных (присущих конкретному естественному языку, диалекту или территориальному образованию), заданных посредством параметра fmtpvdr , а также форматирующей строки, переданной в параметре format Глава 19. Пространство имен System 513 Таблица 19.4. Поля, поддерживаемые структурой Single Поле Описание public const float Epsilon Наименьшее ненулевое положительное значение public const float MaxValue Наибольшее значение, которое можно хранить с помощью типа float public const float MinValue Наименьшее значение, которое можно хранить с помощью типа float public const float NaN Значение, которое не является числом public const float NegativeInfinity Значение, представляющее минус бесконечность public const float PositiveInfinity Значение, представляющее плюс бесконечность Таблица 19.5. Методы, поддерживаемые структурой Double Метод Описание public int CompareTo( object v ) Сравнивает числовое значение вызывающего объекта со значением параметра v . Возвращает нуль, если сравниваемые значения равны. Возвращает отрицательное число, если вызывающий объект имеет меньшее значение, и — положительное, если вызывающий объект имеет большее значение public override bool Equals( object v ) Возвращает значение ИСТИНА, если значение вызывающего объекта равно значению параметра v public override int GetHashCode() Возвращает хеш-код для вызывающего объекта public TypeCode GetTypeCode() Возвращает значение перечисления TypeCode для структуры Double , т.е., TypeCode.Double public static bool IsInfinity( double v ) Возвращает значение ИСТИНА, если значение v представляет бесконечность (со знаком "плюс" либо со знаком "минус"). В противном случае возвращает значение ЛОЖЬ public static bool IsNaN(double v ) Возвращает значение ИСТИНА, если значение v — не число. В противном случае возвращает значение ЛОЖЬ public static bool IsPositiveInfinity( double v ) Возвращает значение ИСТИНА, если значение v представляет бесконечность со знаком "плюс". В противном случае возвращает значение ЛОЖЬ public static bool IsHegativeInfinity( double v ) Возвращает значение ИСТИНА, если значение v представляет бесконечность со знаком "минус". В противном случае возвращает значение ЛОЖЬ public static double Parse(string str ) Возвращает двоичный эквивалент строкового представления числа, заданного в параметре str . Если содержимое строки не представляет значение типа double , генерируется исключение public static double Parse( string str , IFormatProvider fmtpvdr ) Возвращает двоичный эквивалент строкового представления числа, заданного в параметре str с использованием форматов данных (присущих конкретному естественному языку, диалекту или территориальному образованию), заданных посредством параметра fmtpvdr Если содержимое строки не представляет значение типа double, генерируется исключение public static double Parse( string str , NumberStyles styles ) Возвращает двоичный эквивалент строкового представления числа, заданного в параметре str , с использованием информации стилевого характера, заданной в параметре styles . Если содержимое строки не представляет значение типа double , генерируется исключение 514 Часть II. Библиотека C# Окончание табл. 19.5 Метод Описание public static double Parse(string str , NumberStyles styles , IFormatProvider fmtpvdr ) Возвращает двоичный эквивалент строкового представления числа, заданного в параметре str , с использованием информации стилевого характера, заданной в параметре styles , а также форматов данных (присущих конкретному естественному языку, диалекту или территориальному образованию), заданных посредством параметра fmtpvdr . Если содержимое строки не представляет значение типа double , генерируется исключение public override string ToString() Возвращает строковое представление значения вызывающего объекта public string ToString( string format ) Возвращает строковое представление значения вызывающего объекта в соответствии с требованиями форматирующей строки, переданной в параметре format public string ToString( IFormatProvider fmtpvdr ) Возвращает строковое представление значения вызывающего объекта с использованием форматов данных (присущих конкретному естественному языку, диалекту или территориальному образованию), заданных посредством параметра fmtpvdr public string ToString( string format , IFormatProvider fmtpvdr ) Возвращает строковое представление значения вызывающего объекта с использованием форматов данных (присущих конкретному естественному языку, диалекту или территориальному образованию), заданных посредством параметра fmtpvdr , а также форматирующей строки, переданной в параметре format Таблица 19.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 и других числовых C#-типов. Например, ряд методов обеспечивает преобразование значений типа decimal в значения других числовых типов. В структуре Decimal определено восемь открытых конструкторов. Наиболее часто используются следующие шесть: public Decimal(int v ) public Decimal(uint v ) public Decimal(long v ) Глава 19. Пространство имен System 515 public Decimal(ulong v ) public Decimal(float v ) public Decimal(double v ) Каждый из перечисленных конструкторов создает Decimal -объект на основе заданного значения. Decimal -объект также можно создать, указав его составляющие при вызове следующего конструктора: public Decimal(int low , int middle , int high , bool signFlag , byte scaleFactor ) Значение типа decimal состоит из трех частей. Первая представляет собой 96- разрядное целое число, вторая — флаг знака и третья — коэффициент масштабирования. 96-разрядное целое число передается в 32-разрядные участки памяти с помощью параметров low , middle и high . Знак передается через параметр signFlag , который устанавливается равным значению false для положительного числа и значению true — для отрицательного. Коэффициент масштабирования передается посредством параметра scaleFactor , который должен иметь значение в диапазоне от 0 до 28. Этот коэффициент задает степень числа 10 (т.е. 10 scaleFactor ), на которую делится число для получения его дробной части. Вместо того чтобы передавать каждый компонент в отдельности, можно задать составные части Decimal -объекта в массиве целых чисел. В этом случае используйте следующий конструктор: public Decimal(int[] parts ) Первые три int -значения в параметре parts содержат 96-разрядное целое число. 31-й разряд элемента parts[3] содержит флаг числа (нуль — для положительного и 1 — для отрицательного), а в разрядах 16-23 хранится масштабный коэффициент. В структуре Decimal реализованы следующие интерфейсы: IComparable , IConvertible и IFormattable Рассмотрим пример создания значения типа decimal “вручную”. // Создание decimal-значения "вручную". using System; class CreateDec { public static void Main() { decimal d = new decimal(1234 5, 0, 0, false, 2); Console.WriteLine(d); } } Результат выполнения этой программы таков: 123.45 В этом примере значение 96-разрядного целого числа равно 12345 , Это число — положительное и имеет два десятичных разряда. Методы, определенные в структуре Decimal , приведены в табл. 19.7, а поля — в табл. 19.8. В структуре Decimal также определено множество операторов и преобразований, позволяющих совместно использовать decimal -значения в выражениях с другими числовыми типами. Правила использования значений типа decimal в выражениях и инструкциях присваивания описаны в главе 3. |