C#CultureInfo.GetCultures返回一个空列表

Yos*_*ter -2 c# cultureinfo

我不能使用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;
    }
Run Code Online (Sandbox Code Playgroud)

我觉得很奇怪,这不起作用,因为它只是一个复制和粘贴的片段.请帮忙!谢谢

Hen*_*man 5

你必须在某个地方的地板下清扫一个例外.

您的代码失败,因为CultureTypes.AllCultures & ~CultureTypes.NeutralCultures无效.你的清单包含中性文化和new RegionInfo()投掷.

片段:

var c1 = CultureTypes.AllCultures & ~CultureTypes.NeutralCultures;
Console.WriteLine(c1);
Run Code Online (Sandbox Code Playgroud)

产生SpecificCultures, InstalledWin32Cultures,我想这些Win32文化包含中性文化.

简单的解决方案是 CultureInfo.GetCultures(CultureTypes.SpecificCultures);

但要解决的主要问题是您的异常处理和调试技术.