扩展方法错误

时间:2012-12-04 16:26:57

标签: c#

刚收到此错误消息“扩展方法必须在非泛型静态类中定义”,以下是给出错误的类,我知道它与之有关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;
            }
        }
    }
}

1 个答案:

答案 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;
        }
    }
}