Главная страница
Навигация по странице:

  • Члены пространства имен System

  • Метод

  • Структуры типов значений

  • .NET-имя структуры

  • Справочник по C# Герберт Шилдт ббк 32. 973. 26018 75 Ш57 удк 681 07 Издательский дом "Вильямс" Зав редакцией


    Скачать 5.05 Mb.
    НазваниеСправочник по C# Герберт Шилдт ббк 32. 973. 26018 75 Ш57 удк 681 07 Издательский дом "Вильямс" Зав редакцией
    АнкорC #.pdf
    Дата08.12.2017
    Размер5.05 Mb.
    Формат файлаpdf
    Имя файлаC #.pdf
    ТипСправочник
    #10795
    страница31 из 52
    1   ...   27   28   29   30   31   32   33   34   ...   52
    Глава 19
    Пространство имен System

    Глава 19. Пространство имен System
    503 та глава посвящена пространству имен
    System
    , которое занимает наивысший уровень в библиотеке C#. Оно содержит классы, структуры, интерфейсы и перечисления, которые наиболее часто употребляются в C#-программах или считаются важной составляющей среды .NET Framework. Таким образом, пространство имен
    System определяет ядро библиотеки C#.
    Пространство имен
    System также содержит множество вложенных пространств имен, предназначенных для поддержки таких подсистем, как
    System.Net
    . Некоторые из них описаны ниже в этой книге. Однако в этой главе рассматриваются только члены самого пространства имен
    System
    Члены пространства имен System
    Помимо большого количества классов исключений, пространство имен
    System со держит следующие классы:
    Activator AppDomain
    AppDomainSetup
    Array AssemblyLoadEventArgs
    Attribute
    AttributeUsageAttribute BitConverter
    Buffer
    CharEnumerator CLSCompliantAttribute
    Console
    ContextBoundObject ContextStaticAttribute
    Convert
    DBNull Delegate
    Enum
    Environment EventArgs
    Exception
    FlagsAttribute GC
    LoaderOptimizationAttribute
    LocalDataStoreSlot MarshalByRefObject
    Math
    MTAThreadAttribute MulticastDelegate
    NonSerializedAttribute
    Object ObsoleteAttribute
    OperatingSystem
    ParamArrayAttribute Random
    ResolveEventArgs
    SerializableAttribute STAThreadAttribute
    String
    ThreadStaticAttribute TimeZone
    Type
    UnhandledExceptionEventArgs Uri
    OriBuilder
    ValueType Version
    WeakReference
    В пространстве имен
    System определены такие структуры
    ArgIterator Boolean
    Byte
    Char DateTime
    Decimal
    Double Guid
    Int16
    Int32 Int64 IntPtr
    RuntimeArgumentHandle RuntimeFieldHandle
    RuntimeMethodHandle
    RuntimeTypeHandle SByte
    Single
    TimeSpan TypedReference
    UInt16
    UInt32 UInt64 UintPtr
    Void
    В пространстве имен
    System определены следующие интерфейсы:
    IAppDomainSetup IAsyncResult
    ICloneable
    IComparable IConvertible
    ICustomFormatter
    IDisposable IFormatProvider
    IFormattable
    IServiceProvider
    Э

    504
    Часть II. Библиотека C#
    В пространстве имен
    System определены такие делегаты:
    AssemblyLoadEventHandler AsyncCallback
    CrossAppDomainDelegate
    EventHandler ResolveEventHandler
    UnhandledExceptionEventHandler
    В пространстве имен
    System определены следующие перечисления:
    AttributeTargets DayOfWeek
    Environment.SpecialFolder
    LoaderOptimization PlatformID
    TypeCode
    UriHostNameType UriPartial
    Как видно по приведенным выше таблицам, пространство имен
    System отличается довольно большим объемом, и все его составляющие невозможно детально рассмотреть в одной главе. Более того, хотя некоторые члены
    System в общем случае применимы к среде
    .NET Framework, но C#-программистами они обычно не используются. Следует также отметить, что некоторые классы пространства имен
    System
    (например,
    Type
    ,
    Exception и
    Attribute
    ) рассмотрены в части I или в других разделах настоящей книги. А поскольку класс
    System
    String
    , в котором определяется C#-тип string
    , представляет собой очень большую и важную тему, его описание приводится в главе 20 (как тесно связанное с темой форматирования). Поэтому в настоящей главе описаны только те члены пространства имен
    System
    , которые пользуются повышенным вниманием у C#-программистов и не упоминаются в других разделах книги.
    Класс Math
    В классе
    Math определены такие стандартные математические операции, как извлечение квадратного корня, вычисление синуса, косинуса и логарифмов. Методы, определенные в классе
    Math
    , перечислены в табл. 19.1.Все углы задаются в радианах.
    Обратите внимание на то, что все методы, определенные в классе
    Math
    , являются static
    - методами. Поэтому для их использования не нужно создавать объект класса
    Math
    , а значит, нет необходимости и в конструкторах класса
    Math
    В классе
    Math также определены следующие два поля: public const double E public const double PI где E — значение основания натурального логарифма, известное как е, a
    PI
    — значение иррационального числа π.
    Math является sealed
    -классом, т.е. он не может иметь производных классов.
    Таблица 19.1. Методы, определенные в классе Math
    Метод
    Описание
    public static double Abs( double
    v
    )
    Возвращает абсолютную величину параметра
    v
    public static float Abs ( float
    v
    )
    Возвращает абсолютную величину параметра
    v
    public static decimal Abs( decimal
    v
    )
    Возвращает абсолютную величину параметра
    v
    public static int Abs( int
    v
    )
    Возвращает абсолютную величину параметра
    v
    public static short Abs( short
    v
    )
    Возвращает абсолютную величину параметра
    v
    public static long Abs( long
    v
    )
    Возвращает абсолютную величину параметра
    v
    public static sbyte Abs( sbyte
    v
    )
    Возвращает абсолютную величину параметра
    v

    Глава 19. Пространство имен System
    505
    Продолжение табл. 19.1.
    Метод
    Описание
    public static double Acos( double
    v
    )
    Возвращает арккосинус параметра
    v
    . Значение
    v
    должно находиться в диапазоне между -1 и 1 public static double Asin( double
    v
    )
    Возвращает арксинус параметра
    v
    . Значение
    v
    должно находиться в диапазоне между -1 и 1 public static double Atan( double
    v
    )
    Возвращает арктангенс параметра
    v
    public static double Atan2( double
    y
    , double
    x
    )
    Возвращает арктангенс частного
    y/x
    public static double Ceiling( double
    v
    )
    Возвращает наименьшее целое (представленное в виде значения с плавающей точкой), которое не меньше параметра
    v
    . Например, при
    v
    , равном
    1.02, метод
    Ceiling() возвратит 2.0. А при
    v
    , равном -1.02, метод
    Ceiling()
    возвратит -1 public static double Cos( double
    v
    )
    Возвращает косинус параметра
    v
    public static double Cosh( double
    v
    )
    Возвращает гиперболический косинус параметра
    v
    public static double Exp( double
    v
    )
    Возвращает основание натурального логарифма
    е
    , возведенное в степень
    v
    public static double Floor( double
    v
    )
    Возвращает наибольшее целое (представленное в виде значения с плавающей точкой), которое не больше параметра
    v
    . Например, при
    v
    , равном
    1.02, метод
    Floor()
    возвратит 1.0. А при
    v
    , равном -1.02, метод
    Floor()
    возвратит -2 public static double IEEERemainder( double
    dividend
    , double
    divisor
    )
    Возвращает остаток от деления
    dividend/divisor
    public static double Log( double
    v
    )
    Возвращает натуральный логарифм для параметра
    v
    public static double Log( double
    v
    , double
    base
    )
    Возвращает логарифм для параметра
    v
    по основанию
    base
    public static double Log10( double
    v
    )
    Возвращает логарифм для параметра
    v
    по основанию 10 public static double Max( double
    v1
    , double
    v2
    )
    Возвращает большее из значений
    v1
    и
    v2
    public static float Max( float
    v1
    , float
    v2
    )
    Возвращает большее из значений
    v1
    и
    v2
    public static decimal Max( decimal
    v1
    , decimal
    v2
    )
    Возвращает большее из значений
    v1
    и
    v2
    public static int Max( int
    v1
    , int
    v2
    )
    Возвращает большее из значений
    v1
    и
    v2
    public static short Max( short
    v1
    , short
    v2
    )
    Возвращает большее из значений
    v1
    и
    v2
    public static long Max( long
    v1
    , long
    v2
    )
    Возвращает большее из значений
    v1
    и
    v2

    506
    Часть II. Библиотека C#
    Продолжение табл. 19.1.
    Метод
    Описание
    public static uint Max( uint
    v1
    , uint
    v2
    )
    Возвращает большее из значений
    v1
    и
    v2
    public static ushort Max( ushort
    v1
    , ushort
    v2
    )
    Возвращает большее из значений
    v1
    и
    v2
    public static ulong Max( ulong
    v1
    , ulong
    v2
    )
    Возвращает большее из значений
    v1
    и
    v2
    public static byte Max( byte
    v1
    , byte
    v2
    )
    Возвращает большее из значений
    v1
    и
    v2
    public static sbyte Max( sbyte
    v1
    , sbyte
    v2
    )
    Возвращает большее из значений
    v1
    и
    v2
    public static double Min( double
    v1
    , double
    v2
    )
    Возвращает меньшее из значений
    v1
    и
    v2
    public static float Min( float
    v1
    , float
    v2
    )
    Возвращает меньшее из значений
    v1
    и
    v2
    public static decimal Min( decimal
    v1
    , decimal
    v2
    )
    Возвращает меньшее из значений
    v1
    и
    v2
    public static int Min( int
    v1
    , int
    v2
    )
    Возвращает меньшее из значений
    v1
    и
    v2
    public static short Min( short
    v1
    , short
    v2
    )
    Возвращает меньшее из значений
    v1
    и
    v2
    public static long Min( long
    v1
    , long
    v2
    )
    Возвращает меньшее из значений
    v1
    и
    v2
    public static uint Min( uint
    v1
    , uint
    v2
    )
    Возвращает меньшее из значений
    v1
    и
    v2
    public static ushort Min( ushort
    v1
    , ushort
    v2
    )
    Возвращает меньшее из значений
    v1
    и
    v2
    public static ulong Min( ulong
    v1
    , ulong
    v2
    )
    Возвращает меньшее из значений
    v1
    и
    v2
    public static byte Min( byte
    v1
    , byte
    v2
    )
    Возвращает меньшее из значений
    v1
    и
    v2
    public static sbyte Min( sbyte
    v1
    , sbyte
    v2
    )
    Возвращает меньшее из значений
    v1
    и
    v2
    public static double Pow( double
    base
    , double
    exp
    )
    Возвращает значение
    base
    , возведенное в степень
    exp(baseexp)
    public static double Round( double
    v
    )
    Возвращает значение
    v
    , округленное до ближайшего целого числа public static decimal Round( decimal
    v
    )
    Возвращает значение
    v
    , округленное до ближайшего целого числа

    Глава 19. Пространство имен System
    507
    Окончание табл. 19.1
    Метод
    Описание
    public static double Round( double
    v
    , int
    frac
    )
    Возвращает значение
    v
    , округленное до числа, количество цифр дробной части которого равно значению параметра
    frac
    public static decimal Round( decimal
    v
    , int
    frac
    )
    Возвращает значение
    v
    , округленное до числа, количество цифр дробной части которого равно значению параметра
    frac
    public static int Sign( double
    v
    )
    Возвращает -1, если значение
    v
    меньше нуля, 0, если
    v
    равно нулю, и 1, если
    v
    больше нуля public static int Sign( float
    v
    )
    Возвращает -1, если значение
    v
    меньше нуля, 0, если
    v
    равно нулю, и 1, если
    v
    больше нуля public static int Sign( decimal
    v
    )
    Возвращает -1, если значение
    v
    меньше нуля, 0, если
    v
    равно нулю, и 1, если
    v
    больше нуля public static int Sign( int
    v
    )
    Возвращает -1, если значение
    v
    меньше нуля, 0, если
    v
    равно нулю, и 1, если
    v
    больше нуля public static int Sign( short
    v
    )
    Возвращает -1, если значение
    v
    меньше нуля, 0, если
    v
    равно нулю, и 1, если
    v
    больше нуля public static int Sign( long
    v
    )
    Возвращает -1, если значение
    v
    меньше нуля, 0, если
    v
    равно нулю, и 1, если
    v
    больше нуля public static int Sign( sbyte
    v
    )
    Возвращает -1, если значение
    v
    меньше нуля, 0, если
    v
    равно нулю, и 1, если
    v
    больше нуля public static double Sin( double
    v
    )
    Возвращает синус параметра
    v
    public static double Sinh( double
    v
    )
    Возвращает гиперболический синус параметра
    v
    public static double Sqrt( double
    v
    )
    Возвращает квадратный корень параметра
    v
    public static double Tan( double
    v
    )
    Возвращает тангенс параметра
    v
    public static double Tanh( double
    v
    )
    Возвращает гиперболический тангенс параметра
    v
    Рассмотрим пример программы, в которой используется метод
    Sqrt()
    , позволяющий применить теорему Пифагора. Здесь вычисляется длина гипотенузы по заданным длинам двух остальных сторон (катетов) прямоугольного треугольника.
    // Реализация теоремы Пифагора. using System; class Pythagorean { public static void Main() { double s1; double s2; double hypot; string str;
    Console.WriteLine("Введите длину первого катета: "); str = Console.ReadLine(); s1 = Double.Parse(str);

    508
    Часть II. Библиотека C#
    Console.WriteLine("Введите длину второго катета: "); str = Console.ReadLine(); s2 = Double.Parse(str); hypot = Math.Sqrt(s1*s1 + s2*s2);
    Console.WriteLine("Гипотенуза равна " + hypot);
    }
    }
    Результаты выполнения этой программы таковы:
    Введите длину первого катета:
    3
    Введите длину второго катета:
    4
    Гипотенуза равна 5
    Теперь рассмотрим пример программы, в которой используется метод
    Pow()
    для вычисления объема начального капиталовложения, необходимого для достижения желаемой будущей стоимости при заданных годовом показателе ожидаемого дохода и количестве лет. Формула вычисления объема начального капиталовложения имеет следующий вид:
    InitialInvestment = FutureValue / (1 + InterestRate)
    Years
    Поскольку метод
    Pow()
    принимает аргументы типа double
    , процентная ставка и количество лет представляются в виде double
    -значений. Для значений будущей стоимости и объема начального капиталовложения используется тип decimal
    /* Вычисление объема начального капиталовложения, необходимого для достижения известной будущей стоимости при заданных годовом показателе ожидаемого дохода и количестве лет. */ using System; class IntialInvestment { public 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(
    "Введите процентную ставку (например, 0.085): "); str = Console.ReadLine(); try
    {

    Глава 19. Пространство имен System
    509
    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;
    }
    InitInvest = FutVal / (decimal) Math.Pow(IntRate+1.0,
    NumYears);
    Console.WriteLine(
    "Требуемый объем начального капиталовложения: {0:C}",
    InitInvest);
    }
    }
    Результаты выполнения этой программы таковы:
    Введите значение будущей стоимости: 10000
    Введите процентную ставку (например, 0.085): 0.07
    Введите количество лет: 10
    Требуемый объем начального капиталовложения: $5,083.49
    Структуры типов значений
    Структуры типов значений были представлены в главе 14 в связи с их использованием для преобразования строк, которые содержат числовые значения, удобные для восприятия человеком, в эквивалентные двоичные величины. Здесь же они рассматриваются более подробно.
    Структуры типов значений лежат в основе C#-типов значений. Используя члены, определенные этими структурами, можно выполнять операции, разрешенные для определенных типов значений. Ниже показаны .NET-имена структур и их эквиваленты в виде ключевых слов C#:
    .NET-имя структуры
    C#-имя
    .NET-имя структуры
    C#-имя
    Boolean bool
    Char char
    Decimal decimal
    Double double
    Single float
    Int16 short
    Int32 int
    Int64 long
    UInt16 ushort
    UInt32 uint
    UInt64 ulong
    Byte byte
    SByte sbyte
    Все эти структуры рассматриваются в следующих разделах.

    510
    Часть II. Библиотека C#
    На заметку
    Некоторые методы, определенные в структурах типов значений, принимают
    параметры
    типа
    IFormatProvider
    или
    NumberStyles
    .
    Тип
    IFormatProvider
    кратко описан ниже в этой главе, Tun
    NumberStyles
    представляет собой перечисление, принадлежащее пространству имен
    System.Globalization
    . Тема форматирования раскрыта в главе 20
    1   ...   27   28   29   30   31   32   33   34   ...   52


    написать администратору сайта