0

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

4

0 回答 0