Главная » Просмотр файлов » Нэш Трей - C# 2010. Ускоренный курс для профессионалов (2010)

Нэш Трей - C# 2010. Ускоренный курс для профессионалов (2010) (1160865), страница 60

Файл №1160865 Нэш Трей - C# 2010. Ускоренный курс для профессионалов (2010) (Нэш Трей - C# 2010. Ускоренный курс для профессионалов (2010)) 60 страницаНэш Трей - C# 2010. Ускоренный курс для профессионалов (2010) (1160865) страница 602019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 60)

Например, может понадобиться отображать значение с плавающей точкой, представляющее некоторое вещественное значение, в экспоненциальной форме или в форме с фиксированной точкой. В форме с фиксированной точкой может потребоваться использовать некоторый, зависящий от культуры, символ в качестве десятичного разделителя. Традиционно обращение с подобного рода сложностями всегда было достаточно болезненным. Программистам на С для форматирования значений доступно семейство функций ргзпсг, но ему недостает некоторых специфичных для повали возможностей.

В С++ реализован более устойчивый и расширяемый механизм форматирования в виде стандартных потоков ввода-вывода, но также пренебрегающий локалями. Ствндартнэл библиотека .11ЕТ предлагает собственный мощный механизм для решения этих задач в гибкой и расширяемой манере. Однако прежде чем переходить к самой теме спецификаторов формата, рассмотрим несколько предварительных вопросов.

Нв заметку! Соображения, связанные с различными культурами, важно принимать во внимание еще на ранних стадиях цикла разработки. Многие разработчики склонны откладывать на потом решение проблем, связанных с глобализацией. Но если вы заметили, проектировщики .НЕТ Ршгпеаогх приложили массу усилий к созданию развитой библиотеки, позволяющей решать проблемы глобализации.

Богатство и ширина охвата АРРинтерфейса глобализации указывает на ее сложность. Учитывая соображения глобализации нв ранних стадиях разработки, вы избавляете себя от неприятностей, которые неизбежно возникнут позже. 226 Глава 8 ОЬ~ес1. То31г~пд, ХГохпьа11аЬ1е и Си11иге1пйо Калщый объект наследует метод по имени тояггтсд от яузгеп. Оь)ест.

Возможно, вы уже знакомы с ним. Получать строковое представление объекта для вывода, пусть даже только для отладочных целей, исключительно удобно. Для собственных специальных классов реализация по умолчанию метода тояггТпя просто возвращает тип самого объекта. Чтобы этот метод выводил что-то полезное, потребуется предусмотреть собственное переопределение. Как и можно было ожидать, зто сделано во всех встроенных типах. Поэтому, в результате вызова тояггапд на экземпляре я узгею. 1пь 3 2 получается строковое представление хранимого в нем значения. Ио если понадобится строковое представление шестнадцатеричного формата значения, то Оьб ест.

тоясгапд в этом не поможет, поскольку не предусматривает возможности запросить нужный формат. Должен существовать другой способ строкового представления объекта. Фактически он есть, и предусматривает реализацию интерфейса 1РогпаттаЬ1е, который выглядит следующим образом: рцЬ11с тлтеггасе 1гогпаттаЬ1е ( зтг1ло Тозтг1лд( зтгглд Гогпат, 1гогпзСРгочтпег ГогизГРгочгбег ) ) Этот интерфейс реализуют встроенные числовые типы, а также типы даты-времени. С помощью этого метода можно точно указать, каким образом форматировать значение, предоставив строку спецификатора формата.

Прежде чем приступить к описанию того, как выглядят форматные строки, рассмотрим некоторые предварительные концепции, начиная со второго параметра метода 1РогпагтаЬ1е. Тозтгалд. Объект, реализующий интерфейс 1Рогпатргочаг(ег, является поставщиком формата. Общая задача поставщика формата внутри .1)ЕТ Ргашеиюг)т — это предоставление специфичной для данной культуры форматной информации, такой как символ валюты, символ десятичного разделителя и тд. Когда в этом параметре передается сц11, то используемым 1Рогпатсаь1е. тоястапд поставщиком формата обычно является экземпляр сц1тцге1пто, возвращаемый методом яузтет.с1оьа11гзгзол.сц1гцге1лто.

СцггептСц1тцге. Этот экземпляр сц1тцге1птс идентифицирует культуру, используемую текущим потоком. Однако есть возможность переопределить ее, создав новьгй экземпляр сц1тсге1пто и передав его конструкторустроку, описывающую информацию о желаемой лопали, как указано в стандарте йг С 1766 (например, еп-08 для английского языка, используемого в СШя). За дополнительной информацией об именах культур обращайтесь к описанию класса СЬ1тцте 1п 1 о в документации МЗПР(. И, наконец, можно даже предоставить нейтральный по отношению к культуре экземпляр СЬ1 го ге 1л То, передав ему объект, выданный методом сц1тцге1пго.

1пчаг1апссц1гцге. Нв заметку! Экземпляры СЬ1гпге1пто используются в качестве удобного механизма груплирования форматной информации, относящейся к определенной культуре. Например, один экземпляр сц1гцге1птс может представлять специфичные для культуры качества американской версии английского языка, в то время как другие — качества, специфичные для английского, на котором говорят в Соединенном Королевстве. Каждый экземпляр сц1тцге1лто содержит в себе специфичные экземпляры патетапеуогтаг1пго, кцпьегРогпаь1пго, техт1пго и сопраге1пго, присущие представленному языку и региону. Как только реализация 1Рогпаггаь1е. тсяьгзпд получает корректный поставщик формата — передан он явно или присоединен к текущему потоку — она может опрашивать этого поставщика, вызывая метод 1Рсгпзсргоч1сег.

Бесгсгпат. Форматеры реализованы .)ЧЕТ Егатпеиюг)г в типах КцгкЬегуогпат1лго и ратеТ1пеуогтат1лто. Этот ме- Работа со строками 227 ханизм исключительно расширяем, поскольку можно предоставлять собственные типы форматеров, и другие типы, которые знают, как использовать их, могут запрашивать их экземпляры у специального поставщика форматов. Предположим, что необходимо преобразовать числовое значение с плавающей точкой в строку.

Потон выполнения реализации 1РогваогаЬ1е.Тозог1пд для 5уэгев.оопЬ1е выполняет перечисленные ниже основные шаги. 1. Реализация получает ссылку на тип 1Рогвасгготт1т[ег, который является либо переданным, либо присоединенным к текущему потоку, если передан по11. 2. Запрашивается поставщик формата для энземпляра типа ттовЬегуогвао1пго через вызов 1РогвасРгоуьпег. Вегногвзс. поставщик формата инициализирует свойства экземпляра ттовьегуогваг1пго на основе представляемой нм нультуры. 3.

Используется экземпляр КивЬегуогвао1пго для соответствующего форматирования числа, создавая строковое его представление на основе спецификации форматной строки. Создание и регистрация пользовательских типов Си11иге1пйо Средства глобализации платформы .]т]ЕТ Р'гшпеюог]к всегда были ее сильной стороной. Однако всегда оставалась возмолсность для усовершенствований, и большая часть этих усовершенствований появились в .НЕТ 2.0. В частности, в .]к[ЕТ 1.1 всегда был болезненным процесс ввода новой описывающей культуру информации в систему, если каркасу не известна информация об этой культуре и регионе. В .]к[ЕТ 2.0 Ггашеитог]к пространство имен В уз Сев.

51оЬа11 ззгьоп содержит новый класс по имени Сп1гигеАпбнед1оп1пгоВо11о[ег. За счет применения Сп1гпгеАпбнео1оп1пгоВо11бег появляется возможность определять и вводить в систему информацию, описывающую совершенно новую культуру и регион, а также регистрировать ее для глобального использования. Аналогично можно модифицировать уже существующую в системе информацию о культурах и регионах.

И если это еще недостаточно гибко, можно даже сериализовать информацию в файл ЬОМЬ (Ьоса1е Вата Маг1шр Ьапяпаяе — язык разметки данных лопали), имеющий формат, основанный на ХМЬ. После регистрации в системе новой культуры и региона можно создавать экземпляры со1соге1п1о и Ведьоп1пго. применяя строковое имя, зарегистрированное в системе. При назначении имен описаниям новых культур необходимо следовать стандартному формату именования культур.

Здесь принят формат [префикс-]язык[-регион] [-суффикс[...]], где обязательной частью является только идентификатор язык. Префикс может быть одним из следующих: ° 1 — для имен культур, зарегистрированных через ]А]т]А [1птегпе[ Аээ]япеб ]к[шпЬегэ Аитйог]ту — омитет по цифровым адресам в Интернете); ° х — для всех прочих. Вдобавок префиксная часть может быть представлена в верхнем или нижнем регистре. Часть языка представлена двухсимвольным кодом нижнего регистра в стандарте 13О 639-1, в то время как регион описан двухсимвольным кодом верхнего регистра, соответствующим стандарту 18О 3166. Например.

русский язык, на котором говорят в России, обозначается как го-Во. Компонент суффикс используется для дополнительного уточнения культуры на основе некоторых данных. Снажем, сербский, на котором говорят в Сербии, может обозначаться либо зг-ВР-Суг1, либо эг-5Р-Ьаоп — один для кириллического алфавита, другой — для латинского. При определении нультуры, спе- 228 Глава 8 цифичной для подразделения компании, ее можно создать с использованием имени х-гп-НП-Компания-Подразделение.

Чтобыпосмотреть,наскольколегкоиспользоватьобъектСп1Сцгелпс)деоаоп1пгоВц11с(ег, попробуем создать фиктивную культуру на основе уже существующей. В США основной системой мер является английская. Предположим. что в какой-то момент США решили перейти на метрическую систему, и требуется модифицировать информацию о культуре на некоторых машинах, чтобы она соответствовала новым веяниям. Посмотрим, как будет выглядеть необходимый код: овалу ЯувСеви пятно Яувсес .В1оЬв11гвС1оп) рпЬ11с с1ввв ЕпсгуРо1пг вгаСЬс то1О Мв1п() ( Сп1СигеАпОВед1оп1пгоВш1пег сЬЬ = пп11с с1Ь = пен Сп1Спгелпс(Нед1оп1пЕовп11с(ег( "х-еп-ОЯ-иесг1с", Си1СпгеАппяед1опМоб111е гв .

Нопе ); сЬЬ.ЬоааоасаугоиСп1Спге1пго( пеи Сп1гиге1пго("еп-ОЯ") ); сгЬ.Ьоас(ОзгаГгоиВеп1оп1пго( пен Кедаоп1пГо("ОБ") )! /с' Внести изменения. сЬЬ.1вМеСС1с = Сгпе; !/ Создать файл ЬОМЬ. сРЬ.Язве( "х-еп-ОЯ-иеСгтс. 1сьп1" с'с' Зарегистрировать в системе. сЬЬ.Ред1вгег(); На заметку! Чтобы предыдущий пример скомпилировался, понадобится специально сослаться на сборку вувс11оЬ1. С(11, Для компиляции примера из командной строки воспользуйтесь следующей командой: свс /г:вувд1ЬЬ1.с(11 ехзир1е.св Как видите, процесс очень прост, поскольку Сц1Спгедпс(Нед1оп1пгоВп11с(ег имеет продуманный интерфейс.

Для целей иллюстрации разметка ЬГ)МЬ направляется в файл, чтобы можно было увидеть, как выглядит описание культуры, хотя оно довольно многословно, чтобы приводить его здесь. Следует отметить один важный момент: для вызова метода Вес1всег необходимо обладать соответствующими привилегиями. Обычно нужно быть администратором.

хотя это требование можно обойти, если изменить настройки доступа к каталогу %Х1НО1ВЪ1С1оЬа11гаС1оп и к ключу реестра НКЕХ ЬОСАЬ МАСН1НЕ1БУБТЕМсСиггепССопгго1ЯеС'тСопсго1 сн1в'тСцзсоиЬоса1е. Г!осле того как культура зарегистрирована в системе,иней можно обращаться по имени,которое ей было назначено при передаче информации о культуре в среду СЬН. Например, чтобы удостовериться, что информация о культуре и регионе зарегистрирована правильно, скомпилируйте и запустите следующий тестовый код: пв1пс ЯувСекп пв1по Яувгеи.С1оЬз11гвССоп; рпЬ1сс с1авв Епсгуро1пс ( вгаСЬс то1с) Мвап() ( Ведгоп1пго г1 = пен Недтоп1пго("х-еп-Озсвегг1с") Сопво1е.нг1СеЬгпе( г1.1вМеССЬс )! ) Работа со строками 229 Форматные строки Вы должны знать, как выглядят форматные строки.

Характеристики

Тип файла
DJVU-файл
Размер
8,22 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Нэш Трей - C# 2010
Accelerated_C_2010-4565
3_syntax_overview
3_generics_1.cs
as_1.cs
boxing.cs
conversions_1.cs
implicit_type_1.cs
is_1.cs
references_1.cs
references_2.cs
references_3.cs
values_1.cs
4_classes_structs
4_abstract_classes_1.cs
4_beforefieldinit_1.cs
4_box_1.cs
4_box_2.cs
4_box_3.cs
4_box_4.cs
4_box_5.cs
4_class_definition_1.cs
4_compareto_1.cs
4_containment_example_1.cs
4_containment_example_2.cs
4_containment_example_3.cs
4_ctor_struct_1.cs
4_ctor_struct_2.cs
4_ctor_struct_3.cs
4_destructor_1.cs
4_destructor_2.cs
Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
7041
Авторов
на СтудИзбе
260
Средний доход
с одного платного файла
Обучение Подробнее