.NET 中的 GetCountries 未提供所有国家/地区?

GetCountries from .NET not delivering all countries?

当我使用以下代码(过去工作正常)时,我现在使用 .NET 4.6 得到一个列表,该列表不包括纳米比亚,但在过滤前约有 50 次包括 Yabuuti。知道为什么或发生了什么变化吗?

    private void SetCountriesComboBox()
    {
        RegionInfo country = new RegionInfo(new CultureInfo("en-US", false).LCID);
        List countryNames = new List();
        foreach (CultureInfo cul in CultureInfo.GetCultures(CultureTypes.SpecificCultures))
        {
            country = new RegionInfo(new CultureInfo(cul.Name, false).LCID);
            countryNames.Add(country.DisplayName.ToString());
        }
        IEnumerable nameAdded = countryNames.OrderBy(names => names).Distinct();
        foreach (string item in nameAdded)
        {
            comboBox1.Items.Add(item);
        }
    }

RegionInforeturn关于文化的信息,不是国家。 return 个国家/地区没有内置方法(因为它们可以不经常更改)

许多 RegionInfo 连接到多个 CultureInfo。参见例如 https://ideone.com/yTfO8A 。例如印度RegionInfo有14个CultureInfo瑞士RegionInfo有4个CultureInfo.

请注意,您的代码是多余的:您重建 new CultureInfo(cul.Name, false).LCID。更理智的事情是这样的:

private static void SetCountriesComboBox()
{
    List<string> countryNames = new List<string>();

    foreach (CultureInfo cul in CultureInfo.GetCultures(CultureTypes.SpecificCultures))
    {
        RegionInfo country = new RegionInfo(cul.LCID);
        countryNames.Add(string.Format("{0} ({1})", country.DisplayName, cul.DisplayName));
        // countryNames.Add(country.DisplayName);
    }

    IEnumerable<string> nameAdded = countryNames.OrderBy(names => names).Distinct();

    foreach (string item in nameAdded)
    {
        comboBox1.Items.Add(item);
    }
}