我需要检查我得到的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 验证?