Как проверить правильность LCID?

Мне нужно проверить, что я получаю int значение, которое является действительным идентификатором LCID CultureInfo. К несчастью, CultureInfo не содержит что-то вроде bool TryGetCultureInfo(int, out CultureInfo) метод. Также я вижу, что некоторые CultureInfo предметы имеют одинаковое LCID,

Так что я могу использовать этот способ:

var lcids = CultureInfo.GetCultures(CultureTypes
    .AllCultures).Select(c => c.LCID).OrderBy(
    c => c).ToArray(); // it contains duplicates

HashSet<int> repeated = new HashSet<int>();

for (int i = 1; i < lcids.Length; i++) {
    if (lcids[i] == lcids[i - 1]) {
        repeated.Add(lcids[i]);
    }
}

foreach (var item in repeated) {
    Console.WriteLine(item);
}

Выход:

4
4096
31748

Я могу проверить погоду repeated переменная содержит проверенное значение, но мне кажется, что это плохо... Также я могу попробовать использовать конструктор внутри try\catch блок, но это плохой метод, потому что он будет использоваться в итерации и может снизить скорость.

Как я могу проверить подтверждение LCID без try\catch заблокировать и без моего кода, который я покажу раньше?

0 ответов

Другие вопросы по тегам