リストをランダム化する方法について、スレッドからの手榴弾の応答を実装しようとしています:リストをランダム化<T>。このソリューションには、拡張リストの作成が含まれます。これが私自身のコードで書かれた正確な方法です:
static class MyExtensions
{
static readonly Random Random = new Random();
public static void Shuffle<T>(this IList<T> list)
{
Random rng = new Random();
int n = list.Count;
while (n > 1)
{
n--;
int k = rng.Next(n + 1);
T value = list[k];
list[k] = list[n];
list[n] = value;
}
}
}
これに伴う問題は、イベントがトリガーされたときに作成したリストのボタンクリックイベントでメソッドを実行しようとすると、VSがメソッドを認識せず、次のエラーが発生することです。
System.Collections.Generic.IListには、「Shuffle」の定義が含まれておらず、タイプ「System.Collections.Generic.IListが見つかりました...」の最初の引数を受け入れる拡張メソッド「Shuffle」がありません。
参考までに試した使用法は次のとおりです。
public void Button1_Click(object sender, EventArgs e)
{
IList<int> dayList = new List<int>();
for (int i = 0; i < 32; i++)
{
dayList.Add(i);
}
dayList.Shuffle();
More code...
}
これらのボードを検索したところ、拡張メソッドが含まれる名前空間を宣言する必要があることがわかりましたが、私のページの残りの部分とインラインであるため、宣言する名前空間がありません。提案?