-3

刚刚收到此错误消息“Extension method must be defined in a non-generic static class”,下面是给我错误的 Class,我知道它与 Fisher-Yates 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;
            }
        }
    }
}
4

1 回答 1

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;
        }
    }
}
于 2012-12-04T16:28:24.063 回答