某些类型具有TryParse
方法,例如Int32
,Int64
,Boolean
等。它允许检查字符串值而不使用try \ catch块。当在循环中处理许多不正确的值时,它对生产率有很大影响。我需要为LCID的字符串值做同样的事情。但是CultureInfo
类没有TryParse
方法。
CultureInfo culture = null;
try {
culture = CultureInfo.GetCultureInfo(Convert.ToInt32(lcid, 16));
}
catch {
}
如何重写此代码?
答案 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))
{
...
}