我正在尝试从 thsi 线程中实现手榴弹对如何随机化列表的响应:Randomize a List<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”的定义,并且没有扩展方法“Shuffle”接受“System.Collections.Generic.IList”类型的第一个参数......”
这是我尝试使用的参考:
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...
}
我搜索了这些板,发现我需要声明扩展方法所在的命名空间,但我的与我页面的其余部分内联,所以没有命名空间要声明。建议?