C# 是否有内置的区域性名称常量列表?

C# 是否有内置的区域性名称常量列表?,c#,cultureinfo,C#,Cultureinfo,例如,我不能像这样将默认值设置为英语 CultureInfo MyCulture = CultureInfo.ENGLISH; 或 我必须使用列表(或创建自己的枚举)引入字符串依赖项: 那么,是否已经有所有可用的文化信息的枚举或其他类型的列表?您可以使用System.Globalization类获取iso语言和地区名称: System.Globalization.CultureInfo[] cinfo = System.Globalization.CultureInfo.GetCulture

例如,我不能像这样将默认值设置为英语

CultureInfo MyCulture =  CultureInfo.ENGLISH;

我必须使用列表(或创建自己的枚举)引入字符串依赖项:


那么,是否已经有所有可用的
文化信息的枚举或其他类型的列表?

您可以使用System.Globalization类获取iso语言和地区名称:

System.Globalization.CultureInfo[] cinfo = System.Globalization.CultureInfo.GetCultures(System.Globalization.CultureTypes.AllCultures & ~System.Globalization.CultureTypes.NeutralCultures);
System.Globalization.RegionInfo ri = null;
foreach (System.Globalization.CultureInfo cul in cinfo)
{   
    try
    {
        ri = new System.Globalization.RegionInfo(cul.Name);
        Console.WriteLine(cul.TwoLetterISOLanguageName+"-"+ri.TwoLetterISORegionName);
    }
    catch(ArgumentException)
    {
        continue;
    }
}

你的问题是什么?IMO并不需要一个内置的列表,除非你想给用户一个选项来更改它。问题是什么?是否有内置的区域性列表?据我所知,没有类似的枚举,但如果您创建这样一个类并将其发布到此处,那将是非常感谢的。您应该使用神奇常量
“en AU”
。但是,您可以搜索已安装的区域性,例如(使用Linq):
var yourCulture=CultureInfo.GetCultures(cultureType.SpecificCultures)。看到“包罗万象”总是让我畏缩,即使是在示例代码中(顺便说一句,太频繁地复制和粘贴到产品代码中)。请考虑仅捕获MSDN所记录的<代码> AguMutExtExt/Cuff>。您为什么要尝试创建<代码>区域信息< /代码>实例?您的
cul.Name
cul.ToString()
中已经有了格式
[languagecode]-[CountryCode]
,所以请将其写出来。注意:您明确删除了没有国家代码部分的中立文化。
CultureInfo MyCulture =  CultureInfo.getCultureInfo("en-AU");
System.Globalization.CultureInfo[] cinfo = System.Globalization.CultureInfo.GetCultures(System.Globalization.CultureTypes.AllCultures & ~System.Globalization.CultureTypes.NeutralCultures);
System.Globalization.RegionInfo ri = null;
foreach (System.Globalization.CultureInfo cul in cinfo)
{   
    try
    {
        ri = new System.Globalization.RegionInfo(cul.Name);
        Console.WriteLine(cul.TwoLetterISOLanguageName+"-"+ri.TwoLetterISORegionName);
    }
    catch(ArgumentException)
    {
        continue;
    }
}