-1

シャッフル文字列配列アルゴを書き込もうとしましたが、null 参照エラーが発生しました.理由がわかりません..

public static string[] arrRandomized;
public static string[] ShuffleWords(string[] Words)
{
    Random generator = new Random();
    for (int i=0;i < Words.Length; i++) {
        int pos = generator.Next(Words.Length);
        Console.WriteLine(Words[pos]); // I SEE RANDOM ITEM
        Console.Read(); // NULL REFERENCE ERROR AFTER THIS
        if (Words[pos] != null)
        {
            arrRandomized[i] = Words[pos];
            //remove item at pos so I get no duplicates
            Words[pos] = null;
        }
    }

私はArrayListを使用したくありません、私には理由がありますが、それはトピックから外れています。これが機能しない理由を知りたいだけです:/ありがとう

4

2 に答える 2

3

初期化する必要があると思いますarrRandomized

arrRandomized = new string[Words.Length];
于 2012-11-10T18:38:53.187 に答える
0

あなたの arrRandomized は決して初期化されません。また、静的参照を使用するのではなく、配列を返すことをお勧めします。これは、メソッドへの後続の呼び出しによって、arrRandomized へのすべての参照が変更されるためです。

public static string[] ShuffleWords(string[] Words)
{    
    string[] arrRandomized = new string[Words.Length];
    Random generator = new Random();
    for (int i=0;i < Words.Length; i++) 
    {
        int pos = generator.Next(Words.Length);
        Console.WriteLine(Words[pos]); // I SEE RANDOM ITEM
        Console.Read(); // NULL REFERENCE ERROR AFTER THIS
        if (Words[pos] != null)
        {
            arrRandomized[i] = Words[pos];
            //remove item at pos so I get no duplicates
            Words[pos] = null;
        }
    }
    return arrRandomized;
}
于 2012-11-10T18:40:22.497 に答える