Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C中使用CultureInfo对象的随机值#_C#_Cultureinfo - Fatal编程技术网

C# 在C中使用CultureInfo对象的随机值#

C# 在C中使用CultureInfo对象的随机值#,c#,cultureinfo,C#,Cultureinfo,我一直在查看以下链接 但我仍然不明白如何使用CultureInfo类(如“en”或“fr”)随机检索有效的2个字母的区域性值。。。。等等 请帮忙 谢谢 但我仍然不明白如何使用CultureInfo类(如“en”或“fr”)随机创建一个有效的2个字母的区域性值。。。。等等 你是说你想得到一个随机的文化?简单地说,并从该集合中获取一个随机元素。(您可以使用,但请注意。) 编辑:请注意,如果您只是想从一个已知的缩写中获取一个区域性,我建议使用而不是CultureInfo构造函数。这允许缓存,也给了你

我一直在查看以下链接

但我仍然不明白如何使用CultureInfo类(如“en”或“fr”)随机检索有效的2个字母的区域性值。。。。等等

请帮忙

谢谢

但我仍然不明白如何使用CultureInfo类(如“en”或“fr”)随机创建一个有效的2个字母的区域性值。。。。等等

你是说你想得到一个随机的文化?简单地说,并从该集合中获取一个随机元素。(您可以使用,但请注意。)

编辑:请注意,如果您只是想从一个已知的缩写中获取一个区域性,我建议使用而不是
CultureInfo
构造函数。这允许缓存,也给了你一个只读的文化,这几乎肯定是你想要的。(对只读数据进行推理更容易…

(我不确定您想要这个的确切原因,但是…)您可以通过使用,然后从结果中随机选择来获得随机区域性:

var allCultures = CultureInfo.GetCultures(CultureTypes.AllCultures);
var random = new Random();
int index = random.Next(0, allCultures.Length);

var culture = allCultures[index];

string twoLetterCode = culture.TwoLetterISOLanguageName;
请注意,这并没有考虑到具有相同2个字母代码的区域性不是偶数。这将在所有文化中随机选取,但不是通过两个字母的代码平均选取。如果您想要更随机的分布,可以使用:

var uniqueCultureCodes = CultureInfo.GetCultures(CultureTypes.AllCultures)
                      .Select(c => c.TwoLetterISOLanguageName)
                      .Distinct()
                      .ToList();

var random = new Random();
int index = random.Next(0, uniqueCultureCodes.Count);

string twoLetterCode = uniqueCultureCodes[index];
这将创建两个字母代码的不同列表,然后从中随机选取


编辑:如果您的目标仅仅是创建一个
CultureInfo
给定一个两个字母的代码,如“en”或“fr”,您可以执行以下操作:

CultureInfo culture = new CultureInfo("en");

如果您不关心区域(
-
的最后一部分),则需要使用:

CultureInfo[] languages = CultureInfo.GetCultures(CultureTypes.NeutralCultures);
检索不同的语言。 如果您使用:

CultureInfo[] cultures = CultureInfo.GetCultures(CultureTypes.AllCultures);

英语比德语有更大的变化(英语文化比德语文化多)。

您是否尝试过
新文化信息(“en”)
?为什么要创建一个随机文化?为什么要“随机创建一个有效的两个字母的文化”?您在该网站上有完整的列表,这些列表都包含格式化数字、日期等信息。正确地说,为什么要创建一个新的列表?确实,请澄清:您想创建或检索区域性信息,是指随机(在运行时不确定地选择)还是任意选择(不知何故是你选择的,但在某种程度上,无论你选择什么,它都会起作用)?为什么我的问题被否决了?我尽我所能把它传达得尽可能清楚。我认为,OP提到“随机”时意味着“任意”.谢谢Jon..Reed提供了我想要的确切代码。我现在无法接受他的答案。@dotnet从业者:请阅读我答案中有关
Random
问题的链接。不过:如果你快速连续多次调用Reed的代码,很可能会多次使用相同的文化。Jon..此时,我想我不是在寻找真正的随机性。但我感谢你的详细反馈。谢谢谢谢,这正是我想要的。它不会让我接受答案。@dotnet从业者会的-你只需要等一会儿,因为系统会确保其他人也能回答。这不是随机的,因为有更大的可能性获得的是英国文化而不是德国文化(几种“en XX”文化)。@SteenT不清楚哪种文化更好-我编辑以提供两种选择。最初选择了一种随机文化,然后提供了两个字母代码,我的编辑显示从可用的两个字母代码中随机选择。