Культурне середовище в Visual C # (Sharp)

У NET інформація про культурному середовищі вказується за допомогою двох ідентіфікоров: мови і регіональних стандартів Як було згадано раніше, у Швейцарії розмовляють на чотирьох мовах Це означає, що дата, час і грошова едиція виражаються в чотирьох різних способах Це не означає, що формат дати різний в німецькою та французькою мовами Але при однаковому форматі слова для позначення березня – Maerz або Mars – Будуть різними З іншого боку, слова для позначення дат однакові в Австрії, Швейцарії та Німеччини, але формат дати різний Це означає, що для країн з декількома мовами, наприклад Кани (французька та англійська) або Люксембургу (французька та німецька), нбходімо застосування декількох кодувань, звідси і потреба в двох ідентікаторах Інформацію про культурного середовища можна витягти за допомогою наступного коду:

Culturelnfo info = ThreadCurrentThreadCurrentCulture() ConsoleWriteLine(&quotCulture (&quot + infoEnglishName + &quot)&quot)

У даному прикладі інформація про культурному середовищі, асоційованої з поточним потоком, витягується За допомогою методу ThreadCurrentThreadCurrentCulture () Як видно з цього прикладу, окремі потоки можна асоціювати з різними культурними середовищами Властивість EngiishName генерує англійську версію іормаціі про культурному середовищі, яка, у разі установок, наведених на рис 311, була б наступною:

Culture (English (Canada))

Тепер розглянемо число 1,234

В американських або канадських регіональних стандартах це буде число тисячі двісті тридцять чотири Один із способів змінити регіональні стандарти злючается у використанні діалогового вікна мови і регіональних стандартів (див рис 311) Але це можна також зробити програмним чином, як показано в наступному коді:

ThreadCurrentThreadCurrentCulture = new Culturelnfo(&quoten-CA&quot)

У даному прикладі створюється новий екземпляр класу Culturelnfo, що містить регіональний стандарт єп-СА

Далі, у наступному коді наводиться приклад обробки дійсного числа, отформатированного згідно німецькими правилами форматування:

public void TestGermanParseNumber() { ThreadCurrentThreadCurrentCulture = new Culturelnfo(&quotde-DE&quot) double value = DoubleParse(&quot1,234&quot)

}

У прикладі поточного потоку призначається культурне середовище de-DE Згодом у будь-якій процедурі перетворення в якості бази для правил форматування застосовується німецьку мову, що вживається у Німеччині Зміна культурного середовища не впливає на правила форматування мови програмування

За допомогою методів Parse () і TryParse () також можна перетворювати дати і час:

public void TestGermanParseDate() {

DateTime datetime = DateTimeParse(&quotMay 10, 2005&quot) AssertAreEqual(5, datetimeMonth) ThreadCurrentThreadCurrentCulture = new Culturelnfo(&quotde-DE&quot) datetime = DateTime Parse (&quot10 Mai, 2005&quot),-

AssertAreEqual(5, datetimeMonth),-

}

Зверніть увагу на те, як у першому застосуванні метод DateTime Parse () обротал текст, відформатований за англо-канадським правилам, і дізнався, що ідеіфікатор мау дорівнює пятого місяця року Для другого виклику методу DateTime Parse про культурне середовище була змінена на німецьку, що дозволило обробити рядок ю Mai, 2005 В обох випадках, за умови, що ми знали, що оброблювана рядок являє німецьку або англо-канадську дату, її оаботка не уявляла особливих проблем Але обробка німецької дати при устовленной англійської культурному середовищі викличе проблеми

Перетворення даних в рядок є відносно неважко завданням, т к для цього в NET для індивідуальних типів мається метод Tostring о, який і надає бажаний результат У наступному коді демонструється іспользаніе цього методу для перетворення целочисленного значення в рядок:

public void TestGenerateString() { String buffer = 123ToString() AssertAreEqual (&quot123&quot, buffer) ,-

}

Значення 123 неявно перетвориться в змінну, для якої викликається метод ToStringO, що переводить значення в його строкове представлення і зберігає його в строкової змінної buffer За допомогою методу ToStringO також можна перетворити в рядки дійсні числа, як показано в наступному прикладі:

double number = 1235678

String buffer = numberToString(&quot000&quot)

У цьому прикладі метод ToStringO має параметр, який вказує формат рядках поданої перетвореного дійсного числа У даному випадку вказується, що строкове представлення числа повинно мати найбільше два знаки після десяткової точки Так як третя цифра після десяткової точки – 7, то результат округлюється з підвищенням до 12357

Тепер розглянемо, яким чином аспект культурного середовища застосуємо до преоброванію чисел в рядки У наступному коді наводиться приклад перетворення числа в його строкове представлення у форматі певної культурної середовища, public void TestGenerateGermanNumber () {

double number = 1235678

ThreadCurrentThreadCurrentCulture = new Culturelnfo(&quotde-DE&quot) String buffer = numberToString(&quot000&quot) AssertAreEqual(&quot123,57&quot, buffer)

}

Як і в попередніх прикладах, бажана культура привласнюється властивості CurrentCulture поточного потоку Після цього викликається метод ToStringO детвітельного типу, який виконує перетворення і зберігає результат в строкової змінної buffer

У цьому розділі ми розглянули рядки і деякі їх застосування Далі наводиться ключові аспекти глави, які слід запамятати

• Створення тестів для розроблювального додатка є важливою частиною процесу розробки Тест – це не тільки механізм для уловлювання помилок в коді, але також і механізм для розуміння динаміки коду, що розробляється

• Тип string – це спеціальний контрольний тип, що має численні моди і властивості Рекомендується вивчити можливості типу string в документі MS DM

• Кращими джерелами інформації про конкретні методи, властивості або типах є IntelliSense і документація MSDN Добрими ресурсами для вивчення концепції є книги і Web-сторінки, такі як Code Project

• Всі змінні і типи є обєктами

П При розробці коду необхідно визначити відповідальності і контексти

Створення коду в цілому і виправлення помилок зокрема має бути целосим процесом, а не реакцією на розрізнені вимоги і помилки

• Всі рядки засновані на кодуванні Unicode Довжина символів Unicode – 16 бітів

• Перетворення числового представлення чисел і дат в строкове і зворотне перетворення є поширеними операціями

• NET надає високого рівня технологію для таких операцій, включаючи перетворення дат і чисел в комбінаціях форматів різних культурних середовищ і різних мов

Джерело: Гросс К С # 2008: Пер з англ – СПб: БХВ-Петербург, 2009 – 576 е: ил – (Самовчитель)

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*