программирование. Руководство su P# a n Reference в herbert schildt полное руководство с 0 герберт шилдт
Скачать 3.32 Mb.
|
ГЛАВА 21 Пространство имен System В этой главе речь пойдет о пространстве имен System. Это пространство имен самого верхнего уровня в библиотеке классов для среды .NET Framework. В нем непосредственно находятся те классы, структуры, интерфейсы, делегаты и перечисления, которые чаще всего применяются в программах на C# или же считаются неотъемлемой частью среды .NET Framework. Таким образом, пространство имен System составляет ядро рассматриваемой здесь библиотеки классов. Кроме того, в пространство имен System входит много вложенных пространств имен, поддерживающих отдельные подсистемы, например System.Net. Некоторые из этих пространств имен рассматриваются далее в этой книге. А в этой главе речь пойдет только о членах самого пространства имен System. Члены пространства имен System Помимо большого количества классов исключений, в пространстве имен содержатся приведенные ниже классы. ActivationContext Activator AppDomain AppDomainManager AppDomainSetup Applicationld Applicationldentity Array Asse m b ly Loa d Eve ntA rgs Attribute AttributeUsageAttribute BitConverter Buffer CharEnumerator CLSCompliantAttribute Console ConsoleCancelEventArgs Co ntext Bo u n d 0 bj ect Co ntextStat i cAttri b ute Convert DBNull Delegate Enum Environment EventArgs Exception FileStyleUriParser FlagsAttribute FtpStylellri Parser GC GenericUriParser GopherStylellri Parser HttpStyleUri Parser Lazy Lazy LdapStyleUriParser LoaderOptimizationAttribute Local DataStoreSlot Ma rsha 1 By RefO bject Math MTATh read Attribute MulticastDelegate NetPipeStylellriParser NetTcpStylellriParser NewsStyleUriParser NonSerializedAttribute Nullable Object ObsoleteAttribute Ope rati ngSystem Pa ra m Ar rayAtt r i b ute Random ResolveEventArgs SerializableAttribute STAThreadAttribute String StringCom parer ThreadStaticAttribute TimeZone TimeZonelnfo TimeZonelnfo.AdjustmentRule Tuple Tuple<...> (различные формы) Type Unhandled Exception EventArgs Uri UriBuilder Uri Parser UriTemplate UriTemplateEquivalenceComparer UriTemplateMatch UriTemplateTable UriTypeConverter ValueType Version WeakReference Ниже приведены структуры, определенные в пространстве имен System. Arglterator ArraySegment Boolean Byte Char ' ConsoleKeylnfo DateTime DateTimeOffset Decimal Double Guid Int 16 Int32 Int64 IntPtr ModuleHandle Nullable RuntimeArgumentHandle RuntimeFieldHandle RuntimeMethodHandle RuntimeTypeHandle Sbyte Single TimeSpan TimeZonelnfo.TransitionTime Typed Reference Uint16 Ulnt32 Ulnt64 U IntPtr Void _AppDomain lappDomainSetup lAsyncResult ICIoneable IComparable IComparable IConvertible 1 Custom Formatter IDisposable IEquatable IFormatProvider IFormattable IObservable IObserver IServiceProvider Ниже приведены делегаты, определенные в пространстве имен System. Action Action<...> (различные формы) AppDomainlnitializer AssemblyLoadEventHandler AsyncCallback Comparison ConsoleCancelEventHandler Converter CrossAppDoma in Delegate EventHandler EventHandler Func<...> (различные формы) Predicate ResolveEventHandler Unhandled ExceptionEventHandler В пространстве имен System определены приведенные ниже перечисления. ActivationContext.contextForrr i AppDomainManagerlnitializationOptions AttributeTargets Base64Formatting0ptions ConsoleColor ConsoleKey ConsoleModifiers ConsoleSpecialKey DateTimeKind DayOfWeek Environment.SpecialFolder Environment.SpecialFolderOption EnvironmentVariableTarget GCCol lection Mode GCNotificationStatus GenericUriParserOptions LoaderOptimization MidpointRounding PlatformID StringComparison StringSplitOptions TypeCode UriComponents UriFormat UriHostNameType UrildnScope UriKind Uri Partial Как следует из приведенных выше таблиц, пространство имен System довольно обширно, поэтому в одной главе невозможно рассмотреть подробно все его составляющие. К тому же, некоторые члены пространства имен System, в том числе Nullable Класс Math В классе Math определен ряд стандартных математических операций, в том числе извлечение квадратного корня, вычисление синуса, косинуса и логарифмов. Класс Math является статическим, а это означает, что все методы, определенные в нем, относятся к типу static, объекты типа Math не конструируются, а сам класс Math неявно герметичен и не может наследоваться. Методы, определенные в классе Math, перечислены в табл. 21. 1, где все углы указаны в радианах. В классе Math определены также два следующих поля: public const double Е public const double PI где E – значение основания натурального логарифма числа, которое обычно обозначается как е) a PI – значение числа пи. Метод Описание public static double Возвращает абсолютную величину value Abs(double value) public static float Возвращает абсолютную величину value Abs(float value) public static decimal Возвращает абсолютную величину value Abs(decimal value) public static int Abs(int ' Возвращает абсолютную величину value value) public static short Возвращает абсолютную величину value Abs(short value) public static long Abs(long Возвращает абсолютную величину value value) public static sbyte Возвращает абсолютную величину value Abs(sbyte value) public static double Возвращает арккосинус d. Значение d должно на Acos(double d) ходиться в пределах от ‑1 до 1 public static double Возвращает арксинус d. Значение d должно нахо Asin(double d) диться в пределах от ‑1 до 1 public static double Возвращает арктангенс d Atan(double d) public static double Возвращает арктангенс частного от деления у/х Atan2(double y, double x) public static long Возвращает произведение а*Ь в виде значения BigMul(int a, int b) типа long, исключая переполнение public static double Возвращает наименьшее целое, которое пред Ceiling(double a) ставлено в виде значения с плавающей точкой и не меньше а. Так, если а равно 1,02, метод Ceiling ( ) возвращает значение 2,0. А если а равно ‑1,02, то метод Ceiling () возвращает значение ‑1 public static double Возвращает наименьшее целое, которое представ Ceiling(decimal d) лено в виде значения десятичного типа и не меньше d. Так, если d равно 1,02, метод Ceiling () возвращает значение 2,0. А если d равно ‑1,02, то метод Ceiling () возвращает значение ‑1 public static double Возвращает косинус d Cos(double d) public static double Возвращает гиперболический косинус d Cosh(double d) public static int DivRem(int a, Возвращает частное от деления а / Ь, а остаток – int b, out int result) в виде параметра resul t типа out ‑ public static Возвращает частное от деления а / Ь, а остаток – long DivRem(long a, в виде параметра result типа out long b, out long result) _ Продолжение табл. 21.1 Метод Описание public static double Возвращает основание натурального логарифма е, Exp (double "d) возведенное в степень d public static decimal Возвращает наибольшее целое, которое представ Floor(decimal d) лено в виде значения десятичного типа и не больше d. Так, если d равно 1,02, метод Floor ( ) возвращает значение 1,0. А если d равно ‑1,02, метод Floor () возвращает значение ‑2 public static double Возвращает наибольшее целое, которое представ Floor(double d) лено в виде значения с плавающей точкой и не больше d. Так, если d равно 1,02, метод Floor () возвращает значение 1,0. А если d равно ‑1,02, метод Floor () возвращает значение ‑2 public static double Возвращает остаток от деления х/у IEEERemainder(double x, double y) public static double Возвращает натуральный логарифм значения d Log(double d) public static double' Возвращает натуральный логарифм по основанию Log(double d, double newBase значения d newBase) public static double Возвращает логарифм по основанию 10 значения d LoglO(double d) public static double Возвращает большее из значений vail и val2 Max(double vail, double val2) public static float Возвращает большее из значений vail и val2 Max(float vail, float val2) public static decimal Возвращает большее из значений vail и val2 Max(decimal vail, decimal val2) public static int Max(int Возвращает большее из значений vail и val2 vail, int val2) public static short Max(short Возвращает большее из значений vail и val2 vail, short val2) public static long Max(long Возвращает большее из значений vail и val2 vail, long val2) public static uint Max(uint Возвращает большее из значений vail и val2 vail, uint val2) public static ushort Возвращает большее из значений vail и val2 Max(ushort vail, ushort val2) public static ulong Возвращает большее из значений vail и val2 Max(ulong vail, ulong val2) public static byte Max(byte Возвращает большее из значений vail и val2 vail, byte val2) public static sbyte Max(sbyte Возвращает большее из значений vail и val2 vail, sbyte val2) Метод Описание public static double Возвращает меньшее из значений vail и val2 Min(double vail, double val2) public static float Возвращает меньшее из значений vail и val2 Min(float vail, float val2) public static decimal Возвращает меньшее из значений vail и val2 Min(decimal vail, decimal ‘ val2) public static int Min(int Возвращает меньшее из значений vail и val2 vail, int val2) public static short Min(short Возвращает меньшее из значений vail и val2 vail, short val2) public static long Min(long Возвращает меньшее из значений vail и val2 vail, long val2) public static uint Min(uint Возвращает меньшее из значений vail и val2 vail, uint val2) public static ushort Возвращает меньшее из значений vail и val2 Min(ushort vail, ushort val2) public static ulong Min(ulong Возвращает меньшее из значений vail и val2 vail, ulong val2) public static byte Min(byte Возвращает меньшее из значений vail и val2 vail, byte val2) public static sbyte Min(sbyte Возвращает меньшее из значений vail и val2 vail, sbyte val2) public static double Возвращает значение х, возведенное в степень Pow(double x, double y) у(хУ) public static double Возвращает значение а, округленное до ближайше Round(double a) го целого числа public static decimal Возвращает значение d, округленное до ближайше Round(decimal d) го целого числа public static double Возвращает значение value , округленное до чис Round(double value, ла, количество цифр в дробной части которого рав int digits) но значению параметра digits public static decimal Возвращает значение d, округленное до числа, ко Round(decimal d, int digits) личество цифр в дробной части которого равно значению digi ts public static double Возвращает значение value , округленное до бли Round(double value, жайшего целого числа в режиме, определяемом MidpointRounding mode) параметром mode public static decimal Возвращает значение d, округленное до ближайше Round(decimal d, го целого числа в режиме, определяемом параме MidpointRounding mode) тром mode public static double Возвращает значение value , округленное до чис Round(double value, int ла, количество цифр в дробной части которого рав digits, MidpointRounding но значению digi ts, а параметр mode определяет mode) режим округления Окончание табл. 21.1 Метод Описание public static decimal Возвращает значение d, округленное до числа, Round(decimal d, int digits, количество цифр в дробной части которого равно MidpointRounding mode) значению digits , а параметр mode определяет режим округления public static int Возвращает ‑1, если значение value меньше нуля; Sign(double value) 0, если значение value равно нулю; и 1, если зна чение value больше нуля public static int Sign(float Возвращает ‑1, если значение value меньше нуля; value) 0, если значение value равно нулю; и 1, если значение value больше нуля public static int Возвращает ‑1, если значение value меньше нуля; Sign(decimal value) 0, если значение value равно нулю; и 1, если зна чение value больше нуля public static int Sign(int Возвращает ‑1, если значение value меньше нуля; value) 0, если значение value равно нулю; и 1, если значение value больше нуля public static int Sign(short Возвращает ‑1, если значение value меньше нуля; value) 0, если значение value равно нулю; и 1, если значение value больше нуля public static int Sign(long Возвращает ‑1, если значение value меньше нуля; value) 0, если значение value равно нулю; и 1, если значение value больше нуля public static int Sign(sbyte Возвращает ‑1, если значение value меньше нуля; value) 0, если значение value равно нулю; и 1, если значение value больше нуля public static double Возвращает синус числа а Sin(double a) public static double Возвращает гиперболический синус числа value Sinh(double value) public static double Возвращает квадратный корень числа d Sqrt(double d) public static double Возвращает тангенс числа а Tan(double a) public static double Возвращает гиперболический тангенс числа Tanh(double value) value public static double Возвращает целую часть числа d Truncate(double d) public static decimal Возвращает целую часть числа d Truncate(decimal d) В приведенном ниже примере программы метод Sqrt () служит для расчета гипотенузы по длине противоположных сторон прямоугольного треугольника согласно теореме Пифагора. // Расчет гипотенузы по теореме Пифагора. using System; class Pythagorean { static void Main() { double si; double s2; double hypot; string str; Console.WriteLine("Введите длину первой стороны треугольника: "); str = Console.ReadLine(); si = Double.Parse(str); Console.WriteLine("Введите длину второй стороны треугольника: "); str = Console.ReadLine(); s2 = Double .'Parse (str) ; hypot = Math.Sqrt(sl*sl + s2*s2); Console.WriteLine("Длина гипотенузы равна " + hypot); } } Ниже приведен один из возможных результатов выполнения этой программы. Введите длину первой стороны треугольника: 3 Введите длину второй стороны треугольника: 4 Длина гипотенузы равна: 5 Далее следует пример программы, в которой метод Pow () служит для расчета первоначальных капиталовложений, требующихся для получения предполагаемой будущей стоимости, исходя из годовой нормы прибыли и количества лет. Ниже приведена формула для расчета первоначальных капиталовложений. первоначальные капиталовложения = будущая стоимость / (1 + норма прибыли)количество лет В вызове метода Pow () необходимо указывать аргументы типа double, поэтому норма прибыли и количество лет задаются в виде значений типа double. А первоначальные капиталовложения и будущая стоимость задаются в виде значений типа decimal. /* Рассчитать первоначальные капиталовложения, необходимые для получения заданной будущей стоимости, исходя из годовой нормы прибыли и количества лет. */ using System; class Initiallnvestment { static void Main() { decimal initInvest; // первоначальные капиталовложения decimal futVal; // будущая стоимость double numYears; // количество лет double intRate; // годовая норма прибыли string str; Console.Write("Введите будущую стоимость: "); str = Console.ReadLine(); try { ftitVal = Decimal. Parse (str) ; } catch(FormatException exc) { Console.WriteLine(exc.Message); return; } Console.Write("Введите норму прибыли (например, 0.085): ") ; str = Console.ReadLine(); try { intRate = Double.Parse (str); } catch(FormatException exc) { Console.WriteLine(exc.Message); return; } Console.Write("Введите количество лет: "); str = Console.ReadLine(); try { numYears = Double.Parse(str); } catch(FormatException exc) { Console.WriteLine(exc.Message); return; } initlnvest = futVal / (decimal) Math.Pow(intRate+1.0, numYears); Console.WriteLine("Необходимые первоначальные капиталовложения: {0:C}", initlnvest); } } Ниже приведен один из возможных результатов выполнения этой программы. Введите будущую стоимость: 10000 Введите норму прибыли (например, 0.085): 0.07 Введите количество лет: 10 Необходимые первоначальные капиталовложения: $5,083.49 Структуры .NET, соответствующие встроенным типам значений Структуры, соответствующие встроенным в C# типам значений, были представлены в главе 14, где они упоминались в связи с преобразованием строк, содержащих числовые значения в удобочитаемой форме, в эквивалентные двоичные значения. В этом разделе структуры .NET рассматриваются более подобно. Имена структур .NET и соответствующие им ключевые слова, обозначающие типы значений в С#, перечислены в приведенной ниже таблице. Имя структуры в .NET Имя типа значения в C# System.Boolean bool System.Char char System.Decimal decimal System.Double double System.Single float System.Intl6 short System.Int32 int System.Int64 long System.Ulntl6 ushort System.UInt32 uint System.UInt64 ulong System.Byte byte System.Sbyte sbyte Используя члены, определенные в этих структурах, можно выполнять операции над значениями простых типов данных. Все перечисленные выше структуры рассматриваются далее по порядку. ПРИМЕЧАНИЕ Некоторые методы, определенные в структурах, соответствующих встроенным в C# типам значений, принимают параметры типа iFormatProvider или NumberStyles. Тип I Format Provide г вкратце описывается далее в этой главе, а тип NumberStyles представляет собой перечисление из пространства имен System.Globalization. Вопросы форматирования подробнее рассматриваются в главе 22. Структуры целочисленных типов данных Ниже перечислены структуры целочисленных типов данных. Byte SByte I n 116 Uintl6 Int32 UInt32 Int64 Uint64 Каждая из этих структур содержит одинаковое количество членов. В табл. 21.2 для примера перечислены члены структуры Int32. Аналогичные члены в виде методов имеются и у других структур, за исключением целочисленного типа, который они представляют. Помимо перечисленных выше методов, в структурах целочисленных типов данных определены следующие поля типа const. MaxValue MinValue В каждой структуре эти поля содержат наибольшее и наименьшее значения, допустимые для данных соответствующего целочисленного типа. Во всех структурах целочисленных типов данных реализуются следующие интерфейсы: IComparable, IComparable и IEquatable Метод Назначение public int Сравнивает числовое значение вызывающего объекта со CompareTo(object value) значением value. Возвращает нуль, если сравниваемые значения равны; отрицательное значение, если вызывающий объект имеет меньшее значение; и, наконец, положительное значение, если вызывающий объект имеет большее значение public int CompareTo(int Сравнивает числовое значение вызывающего объекта со value) значением value. Возвращает нуль, если сравниваемые значения равны; отрицательное значение, если вызывающий объект имеет меньшее значение; и, наконец, положительное значение, если вызывающий объект имеет большее значение public override bool Возвращает логическое значение true, если значе Equals(object obj) ние вызывающего объекта равно значению параметра obj public bool Equals(int Возвращает логическое значение true, если значе obj) ние вызывающего объекта равно значению параметра obj public override int Возвращает хеш‑код для вызывающего объекта GetHashCode() public TypeCode Возвращает значение перечисления TypeCode для экви GetTypeCode() валентного типа. Например, для структуры Int32 возвращается значение TypeCode. Int32 public static int Возвращает двоичный эквивалент числа, заданного Parse(string s) в виде символьной строки s. Если числовое значение не представлено в строке так, как определено в структуре данного типа, то генерируется исключение public static int Возвращает двоичный эквивалент числа, заданного Parse(string s, в виде символьной строки s, с использованием фор IformatProvider матов данных, характерных для конкретной культурной provi der) среды и определяемых параметром provider. Если числовое значение не представлено в строке так, как определено в структуре данного типа, то генерируется исключение public static int Возвращает двоичный эквивалент числа, заданного Parse(string s, в виде символьной строки s, с использованием дан NumberStyles styles) ных о стилях, определяемых параметром styles. Если числовое значение не представлено в строке так, как определено в структуре данного типа, то генерируется исключение Метод Назначение public static int Возвращает двоичный эквивалент числа, заданного в виде Parse(string s, строки символьной s, с использованием данных о стилях, NumberStyles styles, определяемых параметром styles , а также форматов IformatProvider данных, характерных для конкретной культурной среды provi der) и определяемых параметром provider. Если числовое значение не представлено в строке так, как определено в структуре данного типа, то генерируется исключение public override string Возвращает строковое представление значения вызы ToString() вающего объекта public string Возвращает строковое представление значения вызы ToString(string format) вающего объекта, как указано в форматирующей строке, определяемой параметром format public string Возвращает строковое представление значения вызы ToString(IformatProvider вающего объекта с использованием форматов данных, provi der) характерных для конкретной культурной среды и определяемых параметром provider public string Возвращает строковое представление значения вызы ToString(string format, вающего объекта, как указано в форматирующей строке, IformatProvider определяемой параметром format , но с использова provider) нием форматов данных, характерных для конкретной культурной среды и определяемых параметром provider public static bool Предпринимает попытку преобразовать числовое значе TryParse(string s, out ние, заданное в виде символьной строки s, в двоичное int result) значение. При успешной попытке это значение сохраняется в параметре result и возвращается логическое значение true, а иначе возвращается логическое значение false, в отличие от метода Parse (), который генерирует исключение при неудачном исходе преобразования public static bool Предпринимает попытку преобразовать числовое зна TryParse(string s, чение, заданное в виде символьной строки s, в двоич NumberStyles styles, ное значение с использованием информации о стилях, IformatProvider обозначаемых параметром styles , а также форматов provider , out int данных, характерных для конкретной культурной среды result) и определяемых параметром provider. При успешной попытке это значение сохраняется в параметре result и возвращается логическое значение true, а иначе возвращается логическое значение false, в отличие от метода Parse () , который генерирует исключение при неудачном исходе преобразования Структуры типов данных с плавающей точкой Типам данных с плавающей точкой соответствуют только две структуры: Double и Single. Структура Single представляет тип float. Ее методы перечислены в табл. 21.3, а поля – в табл. 21.4. Структура Double представляет тип double. Ее методы перечислены в табл. 21.5, а поля – в табл. 21.6. Как и в структурах целочисленных типов данных, при вызове метода Parse () или ToStringO из структур типов данных с плавающей точкой можно указывать информацию, характерную для конкретной культурной среды, а также данные форматирования. Таблица 21.3. Методы, поддерживаемые структурой Single Метод Назначение public int Сравнивает числовое значение вызывающего объекта CompareTo(object value) со значением value. Возвращает нуль, если сравниваемые значения равны; отрицательное число, если вызывающий объект имеет меньшее значение, и, наконец, положительное значение, если вызывающий объект имеет большее значение public int Сравнивает числовое значение вызывающего объекта CompareTo(float value) со значением value. Возвращает нуль, если сравниваемые значения равны; отрицательное число, если вызывающий объект имеет меньшее значение, и, наконец, положительное значение, если вызывающий объект имеет большее значение public override bool Возвращает логическое значение true, если значение Equals(object obj) вызывающего объекта равно значению obj public bool Equals(float Возвращает логическое значение true, если значение obj) вызывающего объекта равно значению obj public override int Возвращает хеш‑код для вызывающего объекта GetHashCode() public TypeCode Возвращает значение из перечисления TypeCode для GetTypeCode() структуры Single, т.е. TypeCode . Single public static bool Возвращает логическое значение true, если значение Islnfinity(float f) f представляет плюс или минус бесконечность. В противном случае возвращает логическое значение false public static bool Возвращает логическое значение true, если значение f IsNaN(float f) не является числовым. В противном случае возвращает логическое значение false public static bool Возвращает логическое значение true, если значение IsPositivelnfinity(float f представляет плюс бесконечность. В противном случае f) возвращает логическое значение false public static bool Возвращает логическое значение true, если значение f IsNegativelnfinity(float представляет минус бесконечность. В противном случае f) возвращает логическое значение false public static float Возвращает двоичный эквивалент числа, заданного в виде Parse(string s) символьной строки s. Если в строке не представлено числовое значение типа float, то генерируется исключение public static float Возвращает двоичный эквивалент числа, заданного Parse(string s, в виде символьной строки s, с использованием фор IformatProvider матов данных, характерных для конкретной культурной provider) среды и определяемых параметром provider. Если в строке не представлено числовое значение типа float, то генерируется исключение Метод Назначение public static float Возвращает двоичный эквивалент числа, заданного в Parse(string s, виде символьной строки s, с использованием данных о NumberStyles styles) стилях, определяемых параметром styles. Если в строке не представлено числовое значение типа float, то генерируется исключение public static float Возвращает двоичный эквивалент числа, заданного в Parse(string s, виде символьной строки s, с использованием форматов NumberStyles styles, данных, характерных для конкретной культурной среды IformatProvider и определяемых параметром provider , а также сведе provi der) ний о стилях, обозначаемых параметром styles. Если в строке не представлено числовое значение типа float, то генерируется исключение public override string Возвращает строковое представление значения вызы ToString () вающего объекта public string Возвращает строковое представление значения вызы ToString(string format) вающего объекта, как указано в форматирующей строке, 'определяемой параметром format public string Возвращает строковое представление значения вызы ToString(IformatProvider вающего объекта с использованием форматов данных, provi der) характерных для конкретной культурной среды и определяемых параметром provider public string Возвращает строковое представление значения вызы ToString(string format, вающего объекта, как указано в форматирующей строке, IformatProvider определяемой параметром format, но с использовани provider) ем форматов данных, характерных для конкретной культурной среды и определяемых параметром provider public static bool Предпринимает попытку преобразовать число, заданное TryParse(string s, out в виде символьной строки s, в значение типа float. float result) При успешной попытке это значение сохраняется в параметре result и возвращается логическое значение true, а иначе возвращается логическое значение false, в отличие от метода Parse () , который генерирует исключение при неудачном исходе преобразования public static bool Предпринимает попытку преобразовать числовое зна TryParse(string s, чение, заданное в виде символьной строки s, в значе NumberStyles styles, ние типа float, как указано в форматирующей строке, IformatProvider определяемой параметром format, но с использовани provider, out float ем форматов данных, характерных для конкретной куль result) турной среды и определяемых параметром provider, a, также сведений о стилях, обозначаемых параметром styles. При успешной попытке это значение сохраняет ся в параметре result и возвращается логическое значение true, а иначе возвращается логическое значение false, в отличие от метода Parse ( ), который генерирует исключение при неудачном исходе преобразования Поле Назначение 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 Таблица 21.5. Методы, поддерживаемые структурой Double Метод Назначение public int CompareTo(object Сравнивает числовое значение вызывающего объек value) та со значением value. Возвращает нуль, если сравниваемые значения равны; отрицательное число, если вызывающий объект имеет меньшее значение, и, наконец, положительное значение, если вызывающий объект имеет большее значение public int CompareTo(double Сравнивает числовое значение вызывающего объек value) та со значением value. Возвращает нуль, если сравниваемые значения равны; отрицательное число, если вызывающий объект имеет меньшее значение, и, наконец, положительное значение, если вызывающий объект имеет большее значение public override bool Возвращает логическое значение true, если значе Equals(object obj) ние вызывающего объекта равно значению obj public bool Equals(double Возвращает логическое значение true, если значе obj) ние вызывающего объекта равно значению obj public override int Возвращает хеш‑код для вызывающего объекта GetHashCode() public TypeCode Возвращает значение из перечисления TypeCode GetTypeCode() для структуры Double, т.е. TypeCode . Double public static bool Возвращает логическое значение true, если значе Islnfinity(double d) ние d представляет плюс или минус бесконечность. В противном случае возвращает логическое значе ние false public static bool Возвращает логическое значение true, если зна IsNaN(double d) чение d не является числовым. В противном случае возвращает логическое значение false public static bool Возвращает логическое значение true, если значе IsPositivelnfinity(double ние d представляет плюс бесконечность. В противном d) случае возвращает логическое значение false Метод Назначение public static bool Возвращает логическое значение true, если значе IsNegativelnfinity(double ние d представляет минус бесконечность. В против d) ном случае возвращает логическое значение false public static double Возвращает двоичный эквивалент числа, заданного Parse(string s) в виде символьной строки s. Если в строке не представлено числовое значение типа double, то генерируется исключение public static double Возвращает двоичный эквивалент числа, заданного в Parse(string s, виде символьной строки s, с использованием форма IFormatProvider provider) тов данных, характерных для конкретной культурной среды и определяемых параметром provider. Если в строке не представлено числовое значение типа double, то генерируется исключение public static double Возвращает двоичный эквивалент числа, заданного в Parse (string s, виде символьной строки s, с использованием данных NumberStyles styles) о стилях, определяемых параметром styles. Если в строке не представлено числовое значение типа double, то генерируется исключение public static double Возвращает двоичный эквивалент числа, заданного Parse(string s, в виде символьной строки s, с использованием фор NumberStyles styles, матов данных, характерных для конкретной культур IFormatProvider provider) ной среды и определяемых параметром provider , а также данных о стилях, обозначаемых параметром styles. Если в строке не представлено числовое 1 значение типа double, то генерируется исключение public override string Возвращает строковое представление значения вы ToString() зывающего объекта public string Возвращает строковое представление значения вы ToString(string format) зывающего объекта, как указано в форматирующей строке, определяемой параметром format public string Возвращает строковое представление значения вы ToString(IformatProvider зывающего объекта с использованием форматов provi der) данных, характерных для конкретной культурной среды и определяемых параметром provider public string Возвращает строковое представление значения вызы ToString(string format, вающего объекта, как указано в форматирующей строке, IformatProvider provider) определяемой параметром format , но с использованием форматов данных, характерных для конкретной культурной среды и определяемых параметром provider public static bool Предпринимает попытку преобразовать число, заданное TryParse(string s, out в виде символьной строки s, в значение типа double. double result) При успешной попытке это значение сохраняется в параметре result и возвращается логическое значение true, а иначе возвращается логическое значение false, в отличие от метода Parse (), который генерирует исключение при неудачном исходе преобразования Окончание табл. 21.5 Метод Назначение 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 public const double MaxValue public const double MinValue public const double public const double NegativeInfinity public const double PositiveInfinity Epsilon NaN Наименьшее ненулевое положительное значение Наибольшее значение, допустимое для данных типа double Наименьшее значение, допустимое для данных типа double Значение, не являющееся числом Значение, представляющее минус бесконечность Значение, представляющее плюс бесконечность Структура 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 (т.е. 10scaJe), на которую делится число для получения его дробной части. Вместо того чтобы передавать каждую составляющую объекта типа Decimal отдельно, все его составляющие можно указать в массиве, используя следующий конструктор. public Decimal(int[] bits) Три первых элемента типа int в массиве bits содержат 96‑разрядное целое значение; 31‑й разряд содержимого элемента bits [3] обозначает флаг знака (0 – положительное число, 1 – отрицательное число); а в разрядах 16‑23 содержится масштабный коэффициент. В структуре Decimal реализуются следующие интерфейсы: IComparable, IComparable В приведенном ниже примере программы значение типа 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. |