Почему нет перечисления культуры? - PullRequest
8 голосов
/ 20 апреля 2011

Привет,

Мне было интересно, почему нет предустановленного перечисления для культур в C #? Поскольку культуры никогда не меняются и всегда похожи на «nl-NL, en-GB, en-US» ... почему бы не сделать перечисление, чтобы сделать вещи немного проще?

[править]

Как говорится, культуры меняются ... но не все. Почему бы не создать тип enum / class, который бы содержал все культуры и давал возможность добавлять / изменять их?

Ответы [ 4 ]

15 голосов
/ 20 апреля 2011

"Поскольку культуры никогда не меняются"

Не так ли? Эта статья (Microsoft .NET Framework 4: что нового в глобализации) не согласна. Только за последние 5 лет многое изменилось, например, в регионе Сербии, что привело к появлению новых культур.

В реальном мире информация о глобализации постоянно меняется из-за культурных изменений на местных рынках, из-за новых стандартов, которые часто обновляют информацию, чувствительную к культуре, или из-за того, что Microsoft находит более точную информацию о различных рынках или выходит на большее количество рынков. .

Microsoft .NET Framework 4 поддерживает не менее 354 культур по сравнению с минимумом 203 культур в предыдущем выпуске. Многие из этих культур являются нейтральными, которые были добавлены для завершения родительской цепи в корневую нейтральную культуру.

Например, три нейтральных инуктитута были добавлены к уже существующим культурам инуктитут (Syllabics, Канада) и инуктитут (латинский, Канада)

Кроме того, я думаю, что само перечисление не имеет смысла. CultureInfo - это гораздо больше, чем просто имя, а поиск обеспечивает большую гибкость и независимость от любых политических изменений, которых гораздо больше, чем мы обычно понимаем.

7 голосов
/ 20 апреля 2011

Перечисления фиксируются во время компиляции.

Но набор культур различается во время выполнения:

  • Различные версии ОС поддерживают разные культуры
  • Обновления ОС (СервисПакеты, пакеты Language Interface Pack, ...) могут добавлять культуры
  • . Более поздние версии .NET поддерживают большее количество культур (сборка сборки для одной версии и использование ее с другой).
3 голосов
/ 20 апреля 2011

Они меняются, хотя и медленно. В любом случае, они предшествуют C #, поэтому превращение их в перечисление на этом этапе было бы ошибкой. Как делать системные вызовы POSIX в enum, что я делал в postForth, но знал, что это неправильно, когда я это делал.

2 голосов
/ 20 апреля 2011

Помимо их изменения, как предлагают другие, вы можете создавать свои собственные культуры , и они будут заметно отсутствовать в перечислении, поскольку вы не можете добавлять в него элементы.

...