簡體   English   中英

來自C#枚舉變量的隨機值

[英]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.UpDirection.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM