刚收到此错误消息“扩展方法必须在非泛型静态类中定义”,以下是给出错误的类,我知道它与之有关Fisher-Yates shuffle方法,但即使我删除它,错误仍然出现。我也删除了该方法的所有其他调用,所以我只能假设它的一些自动生成的文件是问题..任何想法我能做什么?因为在我实现shuffle之前我的程序运行得很好。
namespace WindowsFormsApplication6
{
class RandomContent
{
public static string randomFilepath()
{
// string array med alla filpaths
// välj en slumpad filpath att returnera
return "frågor.txt";
}
// Fisher-Yates list-shuffle
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;
}
}
}
}
答案 0 :(得分:3)
“扩展方法必须在非泛型静态类中定义”
所以把它放在一个非通用的静态类中......
public static class Extensions
{
// Fisher-Yates list-shuffle
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;
}
}
}