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