-3

「拡張メソッドは非ジェネリック静的クラスで定義する必要があります」というエラーメッセージが表示されました。エラーが発生するクラスは次のとおりです。Fisher-Yatesシャッフルメソッドと関係があることはわかっていますが、削除しても、エラーは引き続き表示されます。また、そのメソッドの他のすべての呼び出しを削除するため、自動生成されたファイルが問題であると想定することしかできません..私にできることはありますか? そのシャッフルを実装する前に、私のプログラムは問題なく実行されたからです。

    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 に答える