2012-06-19 50 views
2

我正在尝试以下代码来增加ArrayList - questionsAndSeperators的元素。我用两种方法来做这件事。
方法1: -与列表和ArrayList的使用奋斗

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工作正常和suffling的questionsAndSeperators的元素,但方法1不能suffle的questionsAndSeperators的元素。问题方法1? 我在方法1中做错了什么?

回答

3

在方法1中,您创建了一个new List<Question>,其中包含所有元素this.questionsAndSeperators。 然后你洗牌new List<Question>的所有元素。但你不要洗牌this.questionsAndSeperators的元素,因为它的另一个阵列。

在方法2中,您直接访问ArrayList,然后洗牌ArrayList的元素。

+1

你击败了我,+1。 – SuperOli

+0

我太哈哈了,+1 – NominSim

+0

不,不,在方法2中,我是'questionList'的元素和'questionandseparators'的正在满足! – Jaguar

0

在版本一中,您被分配给一个名为“list”的变量,但是您正在一个名为“questionList”的变量中进行混洗。我想知道这个编译。

+0

对不起,我错写了'list'。它是method1中的'questionList'。 Editted – Jaguar