Г. Шилдт - С#4.0 Полное руководство (1160795), страница 140
Текст из файла (страница 140)
ся. пвьп9 Яуясеш; пашеврасе Муиз ( роЬ11с с1авя МуС1аяв ( рпЫ1с МуС1аяв() ( Сопво1е.игпгеъппе("Конструирование из файла Мус1авя2.611."); ) Обратите внимание на то, что в обоих файлах, Сеяб1. ся и Сеяб2. Сз, объявляется пространство имен МуМЯ и что именно в этом пространстве в обоих файлах определяется класс МуС1 аз я.
Следовательно, без псевдонима оба варианта класса МуС1ая я будут недоступными ни одной из программ. И наконец, ниже приведен исходный текст из третьего файла геясЗ. ся, где используются оба варианта класса мус1ая з из файлов б ее с 1 . се и се я с 2 . сз. Это становится возможным благодаря операторам с внешними псевдонимами. // Операторы с внешними псевдонимами должны быть указаны в самом начале файла.
ехсегп а11ая аяш1г ехсегп а11ав Авш2г пяьп9 Яуясешп с1аяв Оешо ( ясапьс чотг( Иаьп() ( авш1::Мукэ.иус1авв П = пен йяш)::Муиз.иуста Авш2::МуНЯ.МуС1аяя П2 = пен Аяш2::Мука.иус1аяя()г ) ) Сначала следует скомпилировать файлы Се я С 1 . с я и Се я С 2 . се в их библиотечные эквиваленты Р(.(.. Для этого достаточно ввести в командной строке следующее. свс /Ьи1пьтаву Севв1.св свс /Ьи1вЬтаву Вевтз.св Глава 20. Небезопасный код, указатели, обнуляемые типы и разные юиочевые слова 715 Затем необходимо скомпилировать файл сезсЗ. са, указав в командной строке свс /гояаа Севь1.Ы1 /т:Лаев Севтз.Ы1 Ьевсэ.св Обратите внимание на применение параметра /г, уведомляющего компилятор о том, что ссылка на метаданные находится в соответствующем файле. В данном случае псевдоним Лапг1 связывается с файлом Сеаг1.
с)11, а псевдоним Азпг2 — с файлом Сезг2.с)11. В самой программе псевдонимы указываются в приведенных ниже операторах с модификатором ехеегп, которые располагаются в самом начале файла. ехсегп а11аз Лаи1г ехсегп а11аз лаи2г А в методе Мазо О псевдонимы используются для разрешения неоднозначности ссылок на класс Мус1а аз. Обратите внимание на следующее применение псевдонима для обращения к классу муС1азз. Л 1::Муив.Мусгаза В этой строке кода первым указывается псевдоним, затем оператор разрешения пространства имен, далее имя пространства имен, в котором находится класс с неоднозначным именем, и, наконец, имя самого класса, следующее после оператора-точки. Та же самая общая форма пригодна и для других внешних псевдонимов.
Ниже приведен результат выполнения данной программы. Конструирование из файла Мус1аза1.с)11. Конструирование из файла МуС1ааа2.с11. 720 Часть )!. Библиотека С№ Члены пространства имен Яув~ев Помимо большого количества классов исключений, в пространстве имен содержатсв приведенные ниже классы. АсгыаиопСоп1ех1 Асича1ог Аррпогпа)пМапацег АРРОогпа)п8ешр Арр1)са1юп)беп111у Аггау АввегпЫуьоабЕчепГАг)!в Апг)ииге ВВСопчеггег Воггег С18Согпрвап1АПпЬи1е Сопво1е Соп1ех1ВоипбОЬ)ес1 Сопво1еСапсе)Ечепгдгив Соп1ех181а1)сАПпииге Сопчегг ОВНи)1 6С Маги МТАТЬгеабАПпии1е моюсав10е1еяаге 5ТАТЬгеабАПпииге 81ппа 51пп№Согп рагег Тпгеаб51а1)сА11г)Ьиге ТипеЕопе Т)пгеЛопе1пго Т)гпе2опе)пго.Аб)ивьпепгйше Тор!в Тир!в<...> (различные формы) ОппапшебЕхсергюпЕчепгАг№в Огг Туре ОпВЫ!бег ОПРагввг ОпТегп р)а1е ОпТегпр)агеЕОива1епсеСогпрагег ОпТепгр)агеМагсп ОпТегпр1а1еТаЫе Чегвоп Ча!иеТуре Ниже приведены структуры, определенные в пространстве имен 8увтею.
АГЯ)1егагог Аггау8е№гпеп1<Т> Воо1еап ауге Оа1ет! гпе ОоиЫе )п116 6огб )п132 )п164 )пгргг 5)па1е 8Ьу1е Тггпе5рап Типе2опе)пйг.Тгапв1юпТ)гпе Туребйегегепсе 0)пгт6 01 п132 01п164 0)пгргг Чою В пространстве имен 8увтею определены приведенные ниже интерфейсы. Ое)еаа1е Ечепгдгав Иа№вАПпЬЫе 6епег!сОпРагвег Гагу<Т> еоабегор1ипаабопАппьиге НегР)ре81у1еОпРагвег Ноп8епа)пебАПпЬгпе ОЬво)е1еАПпои1е йапбогп ОпТуреСопчепег Чуеакйегегепсе Моби1еНапб)е йипгипейеЫНапб1е Анг)ии1еОва№еАПпво1е СпагЕпигпегагог Епо из Ехсербоп РГР81у1еОпРагвег 6орпег81у1еОггРагвег Еагу<Т, ТМе1аба1а> Коса)0ага81оге8)о1 Не1Тср81у1еОг)Рагвег Ни!1аЫе Орегаип№5ув1егп йево!чеЕчеп)Агав Спаг Оа1еТипеойве1 НЫ)аЫе<Т> йип1ипеМе1побНапб)е Арр0огпа)п Арр1!саиоп)б Епч)гопгпепг Н)е81у)еОпРагвег Ннр81у)еОпРагвег Еба р51у1еОпРагвег Магваа)ВуйеГОЫес1 Нечгв5)у)еОпРагвег ОЬ!ес1 РагагпАггауАПг)Ьиге 5епайгаЫеАПпииге Сопво)еКеу)пго Сесина) йопг)гпедгЯмпеп1напб)е йип№гпеТуреНапгве Глава 21.
Пространство имен Вуясев 721 Ярр0ова)п 1а)зр0ова)пВесо !С1опеаЫе )СоврагаЫе !Ая псйеяо11 )СоврагаЫе<Т> 1Сопчен)Ые 1СоясогпрогваССег 10!я ояаЫе 1РоггпасРгоч)бег !Е иасаЫе<Т> )РогваССаЫе !Вегу)сеРгоч)бег ГОЬяегчаЫе<Т> ГОЬяегчег<Т> Ниже приведены делегаты, определенные в пространстве имен Вуяаев. Асбоп<...> (различные фо мы) АррОова!п1п!с!а)цег АьупсСайЬаск Соврапьоп<Т> , Асбоп АььевыуаоабЕчепСНапб)ег СопьоеСапсе1ЕчепсНапсйег Сопчег1ег<Т!при1, НОо1рс1> Ечеп1Напб!ег Ечеп1Напб!ег<ТЕчеп1Аг > Ргеб!сасе<Т> Неьо!чеЕчепсНапб)ег СвььА рОова!пОе!е а1е Рспс<...> азличные формы) Сппапб)ебЕхсерс!опЕчептнапб)ег В пространстве имен Бузаева определены приведенные ниже перечисления.
АсйчабопСопгех1.соп1ехтгогв АррОова!пМапа ег1п!ЬайзайопОрСюпь Ааг)оссетаг еСь ВаьеблгоппаСйп 0 1юпь Сопьо!еСо1ог Сопьо1еКеу Сопво!еМобиегь Оа Ойх)еех Сопьо1еэрес!а1Кеу Оа1еТ!веК!пб Епч!гоппсеп1.8 ес!а)Ромег Епч)гоп вепс В реп)а) Ро!бе горное Епч!гопвеп1чапаЫеТаг еС 6ССойесьопмобе 6СНот!йсас!опэгасоь 6епепсОпРагьегОР1юпь СоабегОрйппгайоп М!бров1носпшп 81пп й10р11опь Втг)п Сов апьоп Р!а)Гоев)0 СбСовропептя ТуреСобе Опйогва1 Оп К!пб Ог!НоынавеТуре ОгйбпВсоре Ог!Рагба! Класс Ма1Ь В классе Маап определен ряд стандартных математических операций, в том числе извлечение квадратного корня, вычисление синуса, косинуса и логарифмов. Класс Маап является статическим, а это означает, что все методы, определенные в нем, относятся к типу яааа1с, объекты типа мать не конструируются, а сам клаас мать неявно герметичен и не может наследоваться. Методы, определенные в классе Маап, перечислены в табл.
21.1, где все углы указаны в радианах. В классе маьь определены также два следующих поля: рпптсс сопят бопЬСе Е риЫсс сопьь босЬСе РТ где Š— значение основания натурального логарифма числа, которое обычно обозна- чается как е; а РТ вЂ” значение числа пи. Как следует из приведенных выше таблиц, пространство имен Вуяаев довольно обширно, поэтому в одной главе невозможно рассмотреть подробно все его составляющие. К тому же, некоторые члены пространства имен Вуяаевь в том числе к а11аь1е<т>, туре, ехаерасоп и йаагсьосе, уже рассматривались в части 1 или будут представлены в последующих главах части П. И наконец, класс Вуясет. Всгйпсь в котором определяется тип ясгспо для символьных строк в С)), обсуждается вместе с вопросами форматирования в главе 22.
В силу этих причин в настоящей главе рассматриваются только те члены данного прсктрансгва имен, которые чаще всего применяются в программировании на СФ и не поясняются полностью в остальных главах книги. 722 Часть (1. Библиотека С№ Таблица 21.1. Методы, определенные в вассе Мах)т Метод риЫ№с ясас№с г(оиЫе АЬя (г(оиЬ1е иа1ие) риЬ11с ясас№с №1оаг АЬя (№1оас иа1ие) риЫ1с ягагдс с(ес1гла1 АЬя(г(ес1иа1 иа1ие) риЫЬс ягаг1с Ьпс АЬя(1пс иа1ие) риЬ1гс ягаг№с япогс АЬя(япогг иа1ие) риЬ11с ясасдс 1опд АЬв(1опд иа1ие) риЬ11с ясасдс яЬусе АЬя(яЬуге иа1ие) риЬ11с ясас1с г(оиЬ1е Асов(с(оиЬ1е гц риЬ11с ягаг1с г)оиЬ1е Аягп(с(оиЬ1е гб риЫдс ясаг1с г(оиЫе Асап (г)оиЬ1е сй риЫЬс ягасвс г(оиЫе Агап2 (г(оиЬ1е у, с(оиЬ1е х) риЬ1гс ясас1с 1опд ВгдМи1(1пг а, Ьпс Ы риЬ11с ясас1с г)оиЫе Се№1№пд (с(оиЬ1е а) риЬ11с ятасус г)оиЬ1е Се111пд(г(ес1ва1 В) риЫгс ясагдс с(оиЬ1е Соя(г(оиЬ1е сб риЬ11с ясас1с г(оиЬ1е СояЛ(г(оиЫе В) риЫ№с ясас1с 1пг Р1тгцен(1пг а, 1пс Ь, оиг 1пс геви1С) риЬ11с ясас1с 1опд Р1ияев(1опд а, 1опд Ь,оиг 1опд геяи1Г) Описание Возвращает абсолютную величину иа1ие Возвращает абсолютную величину иа1ие Возвращает абсолютную величину иа1ие Возвращает абсолютную величину иа1ие ВОЗВращавт абСОЛЮтНуЮ ВЕЛИЧИНУ иа1ие Возвращает абсолютную величину иа1ие Возвращает абсолютную величину т а1ие Возвращает арккосинус г(.
Значение г(должно находиться в пределах от -1 до 1 Возвращает арксинус с(. Значение г(должно находиться в пределах от -1 до 1 Возвращает арктангенс с( Возвращает арктангенс частного от деления у/ х Возвращает произведение а*Ь в виде значения типа 1опд, исключая переполнение Возвращает наименьшее целое, которое представлено в аиде значения с плавающей точкой и не меньше а. Так, если а равно 1,02, метод Се№1гпд () возвращает значение 2,0. А если а равно -1,02, то метод Се111пд () возвращает значение -1 Возвращает наименьшее целое, которое представлено в виде значения десятичного типа и не меньше В.