c#的CultureInfo.GetCultures返回一个空列表
本文关键字:一个 列表 CultureInfo GetCultures 返回 | 更新日期: 2023-09-27 18:04:25
我不能使用GetCultures,从我可以看出它返回一个空白列表。
private void AddressChooser_Load(object sender, EventArgs e)
{
MessageBox.Show("Form load event successfully triggered") //Debug message - This appears at runtime
foreach (string country in GetCountryList())
{
MessageBox.Show(country); //Debug message - This does not appear at runtime!!
countryBox.Items.Clear();
countryBox.Items.Add(country);
}
}
public static List<string> GetCountryList()
{
MessageBox.Show("Function has been triggered successfully"); //Debug message - This appears at runtime
List<string> cultureList = new List<string>();
CultureInfo[] cultures = CultureInfo.GetCultures(CultureTypes.AllCultures & ~CultureTypes.NeutralCultures);
foreach (CultureInfo culture in cultures)
{
RegionInfo region = new RegionInfo(culture.LCID);
if (!(cultureList.Contains(region.EnglishName)))
cultureList.Add(region.EnglishName);
MessageBox.Show(region.EnglishName); //Debug message - This does not appear at runtime!
}
return cultureList;
}
我觉得很奇怪,考虑到它只是一个复制粘贴的片段,这不起作用。请帮助!由于
您一定是在地板垫下面的某个地方扫除了一个异常。
你的代码失败了,因为CultureTypes.AllCultures & ~CultureTypes.NeutralCultures
不工作。您的列表包含中性培养物和new RegionInfo()
抛出。
代码片段:
var c1 = CultureTypes.AllCultures & ~CultureTypes.NeutralCultures;
Console.WriteLine(c1);
产生SpecificCultures, InstalledWin32Cultures
,我想那些Win32培养包含中性的。
简单的解是CultureInfo.GetCultures(CultureTypes.SpecificCultures);
但是需要修复的主要问题是你的Exception处理和调试技术。
首先,调试>>异常并将CLR运行时异常设置为抛出是个好主意。其次,我认为这段代码可以是你正在寻找的:
static void Main()
{
List<string> cultureList = new List<string>();
CultureInfo[] cultures = CultureInfo.GetCultures(CultureTypes.AllCultures & ~CultureTypes.NeutralCultures);
foreach (CultureInfo culture in cultures)
{
try
{
RegionInfo region = new RegionInfo(culture.Name);
if (!(cultureList.Contains(region.EnglishName)))
cultureList.Add(region.EnglishName);
Console.WriteLine(region.EnglishName);
}
catch (ArgumentException e)
{
Console.WriteLine(String.Format("For{0} a specific culture name is required.", culture.Name));
}
}
}
使用按位的或代替和这里的CultureInfo.GetCultures(CultureTypes.AllCultures & ~CultureTypes.NeutralCultures);