我的程序中有一个如下所示的对象:
var allNode = new NodeClass()
{
Id = 1,
Node = new NodeClass()
{
Id = 2,
Node = new NodeClass()
{
Id = 3,
Node = new NodeClass()
{
Id = 4,
Node = new NodeClass()
{
Id = 5,
Node = new NodeClass()
{
Id = 6
}
}
}
}
}
};
现在,我想获得一个随机的子对象并访问Id
值。
我想出的是这个:
var listOfNodes = new List<NodeClass>()
{
allNode,
};
var lastNode = allNode;
while (true)
{
lastNode = lastNode.Node;
if (lastNode != null)
{
listOfNodes.Add(lastNode);
}
else
{
break;
}
}
Console.WriteLine("Random Node: ");
Console.WriteLine(listOfNodes.OrderBy(x=> Guid.NewGuid()).First().Id);
我想知道还有更好的方法吗?
答案 0 :(得分:1)
在某处创建Random类的实例。请注意,每次需要随机数时都不要创建新实例,这一点非常重要。您应该重用旧实例以实现生成数字的一致性。您可以在某个地方有一个静态字段(请注意线程安全性问题
static Random rnd = new Random();
询问Random实例可为您提供一个随机数,其中包含ArrayList中项目的最大数量
int r = rnd.Next(list.Count);
显示字符串
MessageBox.Show((string)list[r]);