Как проверить правильность 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
заблокировать и без моего кода, который я покажу раньше?