この拡張クラスをメインクラス内に追加するだけです。
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();
編集:これは、メソッドの使用方法を示すテストプログラムです。ランダムの誤った使用により、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クラスのランダム静的インスタンスを作成するか、プログラムでより広く共有します。これについては、ランダムに関するFAQで説明されています。
public static class Extensions
{
static Random rand = new Random();
public static int randomOne(this List<int> theList)
{
return theList[rand.Next(0, theList.Count)];
}
}