[英]Random value from c# enum variable
有沒有一種簡單的方法可以從枚舉變量中選擇一個隨機位值?
例如:
[System.Flags]
public enum Direction{
None = 0,
Up = 1,
Down = 2,
Left = 4,
Right = 8,
All = ~None
}
public Direction someDir = Direction.Up | Direction.Down;
我想從someDir
選擇一個隨機的someDir
值,這樣我只能有Direction.Up
或Direction.Down
?
您應該使用一個數組:
Direction validDirections = new[] { Direction.Up, Direction.Down };
接着:
Random rnd = new Random();
Direction selectedDirection = validDirections[rnd.Next(validDirections.Length)];
(請記住重用相同的Random rnd
而不是每次都重新創建它)
如果您真的想擁有一個Direction
變量,則可以將其拆分為List<Direction>
:
Direction someDir = Direction.Up | Direction.Down;
var someDir2 = new List<Direction>();
foreach (Direction dir in Enum.GetValues(typeof(Direction)))
{
if (someDir.HasFlag(dir))
{
someDir2.Add(dir);
}
}
Random rnd = new Random();
Direction selectedDirection = someDir2[rnd.Next(someDir2.Count)];
(請參閱將標記的枚舉解析到列表的最有效方法以及有關使用HasFlag
的各種注釋)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.