我希望能够得到RegionInfo
通过执行以下操作:
new RegionInfo("United Kingdom");
但是这将引发异常,并说,它无法识别。
这对RegionInfo页说,如果“名称不是一个有效的国家/地区名称”抛出一个异常。
然而此页面指定由类的预定义的地区列表,包含United Kingdom
,为什么不创建一个新RegionInfo
与国名工作?
我希望能够得到RegionInfo
通过执行以下操作:
new RegionInfo("United Kingdom");
但是这将引发异常,并说,它无法识别。
这对RegionInfo页说,如果“名称不是一个有效的国家/地区名称”抛出一个异常。
然而此页面指定由类的预定义的地区列表,包含United Kingdom
,为什么不创建一个新RegionInfo
与国名工作?
var regions = CultureInfo.GetCultures(CultureTypes.SpecificCultures).Select(x => new RegionInfo(x.LCID));
var englishRegion = regions.FirstOrDefault(region => region.EnglishName.Contains(name));
如果你想获得RegionInfo
由国家名称,你可以得到IEnumerable<RegionInfo>
然后筛选基础上, EnglishName
如上。 这使您可以填充的东西,如组合框太多的能力。
你也与同一页说:
该RegionInfo名字是在ISO 3166中定义的国家/地区的双字母代码之一。 情况并不显著; 然而,名称,TwoLetterISORegionName和ThreeLetterISORegionName性质以大写字母返回相应的代码。
该代码在页面上,以及GB
似乎是英国的2个字母的代码(这是在代码中以难以搜索!)。 所以,试试这个:
new RegionInfo("GB");
或者,如果你使用.NET 2.0+,建议您使用完整的文化名:
new RegionInfo("en-GB");
从MSDN;
包含在ISO 3166中定义的国家/地区的两个字母代码的字符串。
UNITED KINGDOM
看起来就ok了国家名称和代码元素的ISO网站上。
gb英国
试着用;
new RegionInfo("GB");
如果我浏览到我的构造函数在Visual Studio中看到了总结说:
名称 :包含在ISO 3166中定义的国家/ region.-或-A包含文化名特定文化,风俗文化,或仅Windows文化字符串中的双字母代码的字符串。 如果文化名不是RFC 4646格式 ,应用程序应指定整个文化名,而不仅仅是国家 /地区。
整个文化名称为“EN-GB”。
或者你可以使用“GB”
看MSDN页面:
A string containing one of the two-letter codes defined in ISO 3166 for country/region.
您需要为英国ISO 3166的代码,该国没有名字。
下面是你需要的代码 。
注意从元数据为参数此评论name
这也解释了从.NET Framework 2.0中的变化:
// A string containing one of the two-letter codes defined in ISO 3166 for country/region.-or-Beginning
// in .NET Framework version 2.0, a string containing the culture name for a
// specific culture, custom culture, or Windows-only culture. If the culture
// name is not in RFC 4646 format, your application should specify the entire
// culture name, not just the country/region.