2

我正在尝试以下代码来混杂ArrayList-的元素questionsAndSeperators。我有两种方法。
方法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

在版本一中,您被分配给一个名为“list”的变量,但随后您正在一个名为“questionList”的变量中进行改组。我想知道这是否可以编译。

于 2012-06-19T16:09:20.403 回答