问题描述
Hello stackoverflow社区,
我正在从事一个项目,并坚持以下几点。我所拥有的是一个公共枚举HorizontalDirection类,该类确定Left或Right。我需要做的是用三元运算符调用random.Next(0,2)来确定它是否为0,向左移动是否为1。到目前为止,我没有以下任何运气。
Enum.Parse(random.Next(0,2) == 0 ? HorizontalDirection.Left : HorizontalDirection.Right);
(HorizontalDirection)random.Next(0,2) == 0 ? HorizontalDirection.Left : HorizontalDirection.Right;
对于比我更有经验的大多数人,我很抱歉花您时间在您看来微不足道的事情上。对我来说,这是一个学习为什么我的逻辑失败的机会。
解决方法
您只需要执行随机操作并将其转换为枚举即可:
这是因为可以将int强制转换为枚举(只要int o为0或1!)。 (myEnum)0
将返回myEnum
的第一个值,依此类推。祝您项目顺利!
Random rd = new Random();
HorizontalDirection direction = (HorizontalDirection) rd.Next(2);
这就是三元运算符的样子:
Random rd = new Random();
var random = rd.Next(2);
HorizontalDirection direction = random == 0 ? HorizontalDirection.Left : TransactionState.Right;
,
您的第二个选项有效。这是一个可行的示例。
var l = new List<HorizontalDirection>();
Random r = new Random();
for(int i = 0; i < 1000;i++)
{
var d = r.Next(0,2) == 0 ? HorizontalDirection.Left : HorizontalDirection.Right;
l.Add(d);
}
Console.WriteLine($"lefts: {l.Count(d => d == HorizontalDirection.Left)},rights: {l.Count(d => d == HorizontalDirection.Right)}");
输出
lefts: 468,rights: 532