Полное руководство. С# 4.0
Шрифт:
Ниже приведен один из возможных результатов выполнения этой программы. Введите длину первой стороны треугольника: 3 Введите длину второй стороны треугольника: 4 Длина гипотенузы равна: 5
Далее следует пример программы, в которой метод Pow служит для расчета пер воначальных капиталовложений, требующихся для получения предполагаемой буду щей стоимости, исходя из годовой нормы прибыли и количества лет. Ниже приведена формула для расчета первоначальных капиталовложений. первоначальные капиталовложения = будущая стоимость / (1 + норма прибыли)количество лет
В вызове метода Pow необходимо указывать аргументы типа double, поэтому норма прибыли и количество лет задаются в виде значений типа double. А перво начальные капиталовложения и будущая стоимость задаются в виде значений типа decimal. /* Рассчитать первоначальные капиталовложения, необходимые для получения заданной будущей стоимости, исходя из годовой нормы прибыли и количества лет. */ using System; class InitialInvestment { static void Main { decimal initInvest; // первоначальные капиталовложения decimal futVal; // будущая стоимость double numYears; // количество лет double intRate; // годовая норма прибыли string str; Console.Write("Введите будущую стоимость: "); str = Console.ReadLine; try { futVal = Decimal.Parse(str); } catch(FormatException exc) { Console.WriteLine(exc.Message); return; } Console.Write("Введите
Ниже приведен один из возможных результатов выполнения этой программы. Введите будущую стоимость: 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.Int16 short System.Int32 int System.Int64 long System.UInt16 ushort System.UInt32 uint System.UInt64 ulong System.Byte byte System.Sbyte sbyte
Используя члены, определенные в этих структурах, можно выполнять операции над значениями простых типов данных. Все перечисленные выше структуры рассма триваются далее по порядку.
ПРИМЕЧАНИЕ Некоторые методы, определенные в структурах, соответствующих встроенным в C# ти пам значений, принимают параметры типа IFormatProvider или NumberStyles. Тип IFormatProvider вкратце описывается далее в этой главе, а тип NumberStyles пред ставляет собой перечисление из пространства имен System.Globalization. Вопросы форматирования подробнее рассматриваются в главе 22. Структуры целочисленных типов данных
Ниже перечислены структуры целочисленных типов данных. Byte SByte Int16 Uint16 Int32 UInt32 Int64 UInt64
Каждая из этих структур содержит одинаковое количество членов. В табл. 21.2 для примера перечислены члены структуры Int32. Аналогичные члены в виде методов имеются и у других структур, за исключением целочисленного типа, который они представляют.
Помимо перечисленных выше методов, в структурах целочисленных типов данных определены следующие поля типа const. MaxValue MinValue
В каждой структуре эти поля содержат наибольшее и наименьшее значения, до пустимые для данных соответствующего целочисленного типа.
Во всех структурах целочисленных типов данных реализуются следующие ин терфейсы: IComparable, IComparable<T>, IConvertible, IFormattable и IEquatable<T>, где параметр обобщенного типа Т заменяется соответствующим типом данных. Например, в структуре Int32 вместо Т подставляется тип int.
Таблица 21.2. Методы, поддерживаемые структурой Int32 Метод Назначение public int CompareTo(object value) Сравнивает числовое значение вызывающего объекта со значением value. Возвращает нуль, если сравниваемые значения равны; отрицательное значение, если вызывающий объект имеет меньшее значение; и, наконец, положительное значение, если вызывающий объект имеет большее значение public int CompareTo(int value) Сравнивает числовое значение вызывающего объекта со значением value. Возвращает нуль, если сравниваемые значения равны; отрицательное значение, если вызывающий объект имеет меньшее значение; и, наконец, положительное значение, если вызывающий объект имеет большее значение public override bool Equals(object obj) Возвращает логическое значение true, если значение вызывающего объекта равно значению параметра obj public bool Equals(int obj) Возвращает логическое значение true, если значение вызывающего объекта равно значению параметра obj public override int GetHashCode Возвращает хеш-код для вызывающего объекта public TypeCode GetTypeCode Возвращает значение перечисления TypeCode для эквивалентного типа. Например, для структуры Int32 возвращается значение TypeCode.Int32 public static int Parse(string s) Возвращает двоичный эквивалент числа, заданного в виде символьной строки s. Если числовое значение не представлено в строке так, как определено в структуре данного типа, то генерируется исключение public static int Parse(string s, IformatProvider provider) Возвращает двоичный эквивалент числа, заданного в виде символьной строки s, с использованием форматов данных, характерных для конкретной культурной среды и определяемых параметром provider. Если числовое значение не представлено в строке так, как определено в структуре данного типа, то генерируется исключение public static int Parse(string s, NumberStyles styles) Возвращает двоичный эквивалент числа, заданного в виде символьной строки s, с использованием данных о стилях, определяемых параметром styles. Если числовое значение не представлено в строке так, как определено в структуре данного типа, то генерируется исключение public static int Parse (string s, NumberStyles styles, IformatProvider provider) Возвращает двоичный эквивалент числа, заданного в виде строки символьной s, с использованием данных о стилях, определяемых параметром styles, а также форматов данных, характерных для конкретной культурной среды и определяемых параметром provider. Если числовое значение не представлено в строке так, как определено в структуре данного типа, то генерируется исключение 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 int result) Предпринимает попытку преобразовать числовое значение, заданное в виде символьной строки s, в двоичное значение. При успешной попытке это значение сохраняется в параметре result и возвращается логическое значение true, а иначе возвращается логическое значение false, в отличие от метода Parse, который генерирует исключение при неудачном исходе преобразования public static bool TryParse(string s, NumberStyles styles, IformatProvider provider, out int result) Предпринимает попытку преобразовать числовое значение, заданное в виде символьной строки s, в двоичное значение с использованием информации о стилях, обозначаемых параметром styles, а также форматов данных, характерных для конкретной культурной среды и определяемых параметром provider. При успешной попытке это значение сохраняется в параметре result и возвращается логическое значение true, а иначе возвращается логическое значение false, в отличие от метода Parse, который генерирует исключение при неудачном исходе преобразования Структуры типов данных с плавающей точкой
Типам данных с плавающей точкой соответствуют только две структуры: Double и Single. Структура Single представляет тип float. Ее методы перечисле ны в табл. 21.3, а поля — в табл. 21.4. Структура Double представляет тип double. Ее методы перечислены в табл. 21.5, а поля — в табл. 21.6. Как и в структурах цело численных типов данных, при вызове метода Parse или ToString из структур типов данных с плавающей точкой можно указывать информацию, характерную для конкретной культурной среды, а также данные форматирования.
Таблица 21.3. Методы, поддерживаемые структурой Single Метод Назначение public int CompareTo(object value) Сравнивает числовое значение вызывающего объекта со значением value. Возвращает нуль, если сравниваемые значения равны; отрицательное число, если вызывающий объект имеет меньшее значение, и, наконец, положительное значение, если вызывающий объект имеет большее значение public int CompareTo(float value) Сравнивает числовое значение вызывающего объекта со значением value. Возвращает нуль, если сравниваемые значения равны; отрицательное число, если вызывающий объект имеет меньшее значение, и, наконец, положительное значение, если вызывающий объект имеет большее значение public override bool Equals(object obj) Возвращает логическое значение true, если значение вызывающего объекта равно значению obj public bool Equals(float obj) Возвращает логическое значение true, если значение вызывающего объекта равно значению obj public override int GetHashCode Возвращает хеш-код для вызывающего объекта public TypeCode GetTypeCode Возвращает значение из перечисления TypeCode для структуры Single, т.е. TypeCode.Single public static bool IsInfinity(float f) Возвращает логическое значение true, если значение f представляет плюс или минус бесконечность. В противном случае возвращает логическое значение false public static bool IsNaN(float f) Возвращает логическое значение true, если значение f не является числовым. В противном случае возвращает логическое значение false public static bool IsPositiveInfinity(float f) Возвращает логическое значение true, если значение f представляет плюс бесконечность. В противном случае возвращает логическое значение false public static bool IsNegativeInfinity(float f) Возвращает логическое значение true, если значение f представляет минус бесконечность. В противном случае возвращает логическое значение false public static float Parse(string s) Возвращает двоичный эквивалент числа, заданного в виде символьной строки s. Если в строке не представлено числовое значение типа float, то генерируется исключение public static float Parse(string s, IformatProvider provider) Возвращает двоичный эквивалент числа, заданного в виде символьной строки s, с использованием форматов данных, характерных для конкретной культурной среды и определяемых параметром provider. Если в строке не представлено числовое значение типа float, то генерируется исключение public static float Parse(string s, NumberStyles styles) Возвращает двоичный эквивалент числа, заданного в виде символьной строки s, с использованием данных о стилях, определяемых параметром styles. Если в строке не представлено числовое значение типа float, то генерируется исключение public static float Parse(string s, NumberStyles styles, IformatProvider provider) Возвращает двоичный эквивалент числа, заданного в виде символьной строки s, с использованием форматов данных, характерных для конкретной культурной среды и определяемых параметром provider, а также сведений о стилях, обозначаемых параметром styles. Если в строке не представлено числовое значение типа float, то генерируется исключение 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 float result) Предпринимает попытку преобразовать число, заданное в виде символьной строки s, в значение типа float. При успешной попытке это значение сохраняется в параметре result и возвращается логическое значение true, а иначе возвращается логическое значение false, в отличие от метода Parse, который генерирует исключение при неудачном исходе преобразования public static bool TryParse(string s, NumberStyles styles, IformatProvider provider, out float result) Предпринимает попытку преобразовать числовое значение, заданное в виде символьной строки s, в значение типа float, как указано в форматирующей строке, определяемой параметром format, но с использованием форматов данных, характерных для конкретной культурной среды и определяемых параметром provider, а, также сведений о стилях, обозначаемых параметром styles. При успешной попытке это значение сохраняется в параметре result и возвращается логическое значение true, а иначе возвращается логическое значение false, в отличие от метода Parse, который генерирует исключение при неудачном исходе преобразования
Таблица 21.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 Значение, представляющее плюс бесконечность