只需在主类中添加这个扩展类:
public static class Extensions
{
public static int randomOne(this List<int> theList)
{
Random rand = new Random(DateTime.Now.Millisecond);
return theList[rand.Next(0, theList.Count)];
}
}
然后调用它:
int value = mylist.randomOne();
编辑:这是一个测试程序,演示如何使用该方法。请注意,由于 Random 的错误使用,它会产生非常不平衡的结果,100 个中超过 50 个“随机”数字是相同的。
class Program
{
static void Main(string[] args)
{
var myList = Enumerable.Range(0, 100).ToList();
var myRandoms = myList.Select(v => new { key = v, value = 0 })
.ToDictionary(e => e.key, e => e.value);
for (int i = 0; i < 100; i++)
{
var random = myList.RandomOne();
myRandoms[random]++;
}
Console.WriteLine(myRandoms.Values.Max());
Console.ReadLine();
}
}
要解决此问题,请为 Extension 类制作 Random 静态实例或在程序中更广泛地共享。这在Random 的常见问题解答中进行了讨论。
public static class Extensions
{
static Random rand = new Random();
public static int randomOne(this List<int> theList)
{
return theList[rand.Next(0, theList.Count)];
}
}