2012-06-19 49 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