我需要检查我是否获得int
值,这是CultureInfo的有效LCID。很遗憾,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
我可以检查wether repeated
变量是否包含已检查的值,但它对我来说似乎不好...我也可以尝试在try\catch
块内部使用构造函数但是它是不好的方法,因为它会在迭代中使用并可以降低速度。
如何在没有try\catch
阻止且没有我之前显示的代码的情况下检查LCID验证?