2

ArrayList-の要素をスフレするために次のコードを試していますquestionsAndSeperators。私はこれを2つの方法で行っています。
方法1:-

List<Question> questionList = this.questionsAndSeperators.Cast<Question>().ToList();

Random rng = new Random();
int questionCount = questionList.Count;
while (questionCount > 1)
{
   questionCount--;
   int index = rng.Next(questionCount + 1);
   Question value = questionList[index];
   questionList[index] = questionList[questionCount];
   questionList[questionCount] = value;
}

方法2:-

ArrayList questionList = this.questionsAndSeperators;

Random rng = new Random();
int questionCount = questionList.Count;
while (questionCount > 1)
{
   questionCount--;
   int index = rng.Next(questionCount + 1);
   object value = questionList[index];
   questionList[index] = questionList[questionCount];
   questionList[questionCount] = value;
}

これQuestionがクラスです。
方法2は正常に機能し、の要素をスフレしますがquestionsAndSeperators方法1は。の要素をスフレすることはできませんquestionsAndSeperators方法1の問題は何ですか?方法1で何か間違ったことをしていますか?

4

2 に答える 2

3

方法1ではnew List<Question>、のすべての要素を使用してを作成しますthis.questionsAndSeperators。次に、のすべての要素をシャッフルしますnew List<Question>this.questionsAndSeperatorsただし、別の配列であるため、の要素をシャッフルしないでください。

方法2では、直接アクセスしArrayList、の要素をシャッフルしますArrayList

于 2012-06-19T16:08:27.017 に答える
0

バージョン1では、「list」という変数に割り当てられていますが、「questionList」という変数でシャッフルを実行しています。これがコンパイルされるのだろうか。

于 2012-06-19T16:09:20.403 に答える