如何在没有try \ catch块的情况下检查LCID的验证?

时间:2015-04-27 07:28:27

标签: c# .net cultureinfo lcid

某些类型具有TryParse方法,例如Int32Int64Boolean等。它允许检查字符串值而不使用try \ catch块。当在循环中处理许多不正确的值时,它对生产率有很大影响。我需要为LCID的字符串值做同样的事情。但是CultureInfo类没有TryParse方法。

CultureInfo culture = null;
try {
  culture = CultureInfo.GetCultureInfo(Convert.ToInt32(lcid, 16));
}
catch {
}

如何重写此代码?

1 个答案:

答案 0 :(得分:3)

您可以通过LCID在字典中缓存所有CultureInfo对象:

var culturesByLcid = CultureInfo
    .GetCultures(CultureTypes.AllCultures)
    .ToDictionary(c => c.LCID, c => c);

并使用TryGetValue,如:

CultureInfo found;
if (culturesByLcid.TryGetValue(lcid, out found))
{
    ...
}