1

Windows Phone と C# についても理解を深めています。Coloring() 関数に IndexOutOfRangeException があることがわかりました。

public void Coloring()
    {
        szinek_base.Add(Color.FromArgb(255, 0, 171, 169));
        szinek_base.Add(Color.FromArgb(255, 140, 191, 38));
        szinek_base.Add(Color.FromArgb(255, 160, 80, 0));
        szinek_base.Add(Color.FromArgb(255, 230, 113, 184));
        szinek_base.Add(Color.FromArgb(255, 240, 150, 9));
        szinek_base.Add(Color.FromArgb(255, 27, 161, 226));
        szinek_base.Add(Color.FromArgb(255, 229, 20, 0));
        szinek_base.Add(Color.FromArgb(255, 51, 153, 51));
        int remove;
        Color szin = new Color();
        Random generator = new Random();
        List<int> lapok = new List<int>();
        for (int l = 0; l < 16; l++)
        {
            lapok.Add(l);
        }

        for (int i = 0; i < 8; i++)
        {   
                szin = szinek_base[generator.Next(0, szinek_base.Count)]; 

                remove = lapok[generator.Next(0, lapok.Count)]; 
                szinek[remove] = szin;
                lapok.Remove(remove);
                szinek_base.Remove(szin);

                remove = lapok[generator.Next(0, lapok.Count)];
                szinek[remove] = szin;
                lapok.Remove(remove);
                szinek_base.Remove(szin);
        }
    }

try-catch を使用すると、2 番目の for() サイクルにバグが含まれていることもわかりました。ただし、ブロックを半分に分割してtry-catchを使用すると、エラーも最初の部分でも2番目の部分でも見つかりません。ちなみに、このコードはWindows 7でメモリゲームの一部として正常に動作します。アイデアがありません。助けてくれてありがとう、文法やその他の間違いでごめんなさい、私はまだ StackOverflow プロトコルを認識していません。

編集:言及するのを忘れました、メインの名前空間にはそれらが含まれています:

public List<Color> szinek_base = new List<Color>();
Color[] szinek = new Color[8];
4

3 に答える 3

4

コメントとその後の編集から:

szinekは8要素の配列のようですが、lapokは16要素のリストです。

lapok.Countが Random コンストラクターの 2 番目のパラメーターに渡されると、8 より大きい値が生成される可能性があり、IndexOutOfRangeExceptionが発生することを意味します。

于 2012-04-10T10:35:08.400 に答える
3

編集

申し訳ありませんが、最初の答えは正しくありませんでした。エイドリアンが強調表示したように、リムーバブルアイテムを強調表示するために誤ったリストカウントプロパティが使用されているため、例外がスローされています。

于 2012-04-10T10:08:54.093 に答える
1

私の以前の回答は無視してください。私は実際の問題を見つけました...

0 から 16 の間の任意の確率変数に基づいて削除を設定します。

次に、szinek から要素 "remove" を削除しようとしますが、これはサイズ 8 のみである可能性があります。

于 2012-04-10T10:38:18.043 に答える