我很難以正確地做到這一點。我發現this,我不確定這是否可能是重複的。C# - 創建一個EnumRandomizer類
我會從頭開始。我能夠實現我張貼專門爲隨機該枚舉,看起來像下面創建一個類的線程給出的建議是:
public class Foo
{
public static Random rand = new Random();
public static FooEnum[] values;
public static FooEnum GetRandomFoo()
{
values = (FooEnum[]) Enum.GetValues(typeof(FooEnum));
return values[rand.Next(0, Values.Length)];
}
public enum FooEnum { A, B, C}
}
這相當奏效。唯一的問題是,它顯然導致我在我的枚舉中包裝一個類,因此總是要求我提出兩種不同的方式來表達同一事物(例如,類Gender覆蓋enum Sex;類Weapon包裹enum WeaponType等);
這也是低效的,因爲它會要求我編寫必須一遍又一遍地重複實現的代碼。因此,明顯的解決方案是創建一個隨機枚舉類,它可以採用任何類型的枚舉類型並使用以下方法對其進行隨機化。
有沒有人有關於如何做到這一點的任何想法?我的方法不太合適:
public class EnumRandomizer
{
private Random rand;
private Type[] values;
private int randomizerId;
private static int randomizerCount = 0;
public EnumRandomizer()
{
rand = new Random();
randomizerId = randomizerCount;
randomizerCount++;
}
public Type RandomEnum(Type type)
{
values = (Type[]) Enum.GetValues(type);
return values[rand.Next(0, values.Length)];
}
}
任何接受者?
需要強制轉換Enum.GetValues的返回值 – heisenberg
謝謝。你介意給我展示一個如何實現這種行爲的簡單例子嗎?我對泛型非常陌生,我不知道如何調用這種方法。 – zeboidlund
@kekekela好的。將更新。 – jdmichal