C#学习教程:如何检查.NET中的现有文化是否有像TryGetCultureInfo这样返回bool值的方法?我不想使用try-catch语句CultureInfoculture=CultureInfo.GetCultureInfo(cultureCode);如果(文化==null){文化=CultureInfo.GetCultureInfo(DefaultCultureCode);我不认为有这样的方法。因此,您可以尝试捕获或检查所有已安装的文化:stringcultureCode="de-DE";CultureInfo[]cultures=CultureInfo.GetCultures(CultureTypes.AllCultures&~CultureTypes.NeutralCultures);varculture=cultures.FirstOrDefault(c=>c.Name.Equals(cultureCode,StringComparison.OrdinalIgnoreCase));如果(culture==null){culture=cultures.FirstOrDefault(c=>c.Name.Equals(DefaultCultureCode,StringComparison.OrdinalIgnoreCase));如果(文化==null)文化=CultureInfo.CurrentCulture;但我更喜欢try-catch,我认为它更有效率。publicboolTryGetCultureInfo(stringcultureCode,stringDefaultCultureCode,outCultureInfoculture){try{culture=CultureInfo.GetCultureInfo(cultureCode);返回真;}catch(CultureNotFoundException){如果(DefaultCultureCode==null)culture=CultureInfo.CurrentCulture;else{try{culture=CultureInfo.GetCultureInfo(DefaultCultureCode);}catch(CultureNotFoundException){culture=CultureInfo.CurrentCulture;}}}返回假;}你可以编写一个DoesCultureExist方法返回一个布尔值,如下所示:privatestaticboolDoesCultureExist(stringcultureName){returnCultureInfo.GetCultures(CultureTypes.AllCultures).Any(culture=>string.Equals(culture.Name,cultureName,StringComparison.CurrentCultureIgnoreCase));}如果你想要它快,你可以使用:internalstaticclassCulture{privatestaticreadonlyHashSetCultureNames=CreateCultureNames();内部静态布尔存在(字符串名称){返回CultureNames.Contains(名称);}privatestaticHashSetCreateCultureNames(){varccultureInfos=CultureInfo.GetCultures(CultureTypes.AllCultures).Where(x=>!string.IsNullOrEmpty(x.Name)).ToArray();varallNames=newHashSet(StringComparer.OrdinalIgnoreCase);allNames.UnionWith(cultureInfos.Select(x=>x.TwoLetterISOLanguageName));allNames.UnionWith(cultureInfos.Select(x=>x.Name));返回所有名称;不,据我所知这是不可能的你可以先检查文化是否存在,在这种情况下获取它。以下代码显示了如何执行此操作:privatestaticCultureInfoGetCulture(stringname){if(!CultureExists(name))returnnull;返回CultureInfo.GetCultureInfo(名称);}privatestaticboolCultureExists(stringname){CultureInfo[]availableCultures=CultureInfo.GetCultures(CultureTypes.AllCultures);foreach(CultureInfocultureinavailableCultures){if(culture.Name.Equals(name))returntrue;}返回假;查看.NET中文化分享的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
