C# 从选择的组中获取随机枚举
给定一组我无法修改的大约20个枚举 我在寻找一个优雅的解决方案,从一个特定的样本(即,2,7,18)生成一个随机枚举C# 从选择的组中获取随机枚举,c#,random,enums,C#,Random,Enums,给定一组我无法修改的大约20个枚举 我在寻找一个优雅的解决方案,从一个特定的样本(即,2,7,18)生成一个随机枚举 我可以将它们放入arraylist中,但我想问一下是否还有其他方法可以尝试。您可以通过以下方法获取给定枚举类型的所有值: var values = Enum.GetValues(typeof(MyEnum)); 如果您的值都是相同类型的: MyEnum[] values = { MyEnum.Value2, MyEnum.Value7, MyEnum.Value18 }; Ra
我可以将它们放入arraylist中,但我想问一下是否还有其他方法可以尝试。您可以通过以下方法获取给定枚举类型的所有值:
var values = Enum.GetValues(typeof(MyEnum));
如果您的值都是相同类型的:
MyEnum[] values = { MyEnum.Value2, MyEnum.Value7, MyEnum.Value18 };
Random random = new Random();
MyEnum randomValue = values[random.Next(values.Length)];
最简单的解决方案是将要从中选择的枚举放入某种数组或列表中,然后从中随机选择
如果你只是从完整的定义中随机选择,你必须检查答案并拒绝那些你不想要的。我开发了一个快速控制台应用程序,它可以做这样的事情,但无法证明它的性能:)
为什么这么复杂
private static T GetRandomEnum<T>()
{
return Enum.GetValues(typeof(T)).Cast<T>().OrderBy(e => Guid.NewGuid()).First();
}
private static T GetRandomEnum()
{
返回Enum.GetValues(typeof(T)).Cast().OrderBy(e=>Guid.NewGuid()).First();
}
用法:
GetRandomEnum<MyEnumType>()
GetRandomEnum()
您所说的“一组大约20个枚举”是什么意思。你是说有20个枚举数的枚举吗?你能发布一个代码示例吗?虽然这段代码可能会解决这个问题,但需要一个解释才能给出答案。
GetRandomEnum<MyEnumType>()
enum days
{
sunday,monday,tuesday,wednesday,thursday,friday,saturday
}
static void Main(string[] args)
{
Random r = new Random();
Console.WriteLine(Enum.GetNames(typeof(days))[r.Next(1, 7)]);
Console.ReadKey();
}