2012-06-19 8 views
2

다음 코드를 사용하여 ArrayList - questionsAndSeperators의 요소를 처리하려고합니다. 나는 두 가지 방법으로 이것을하고있다.
방법 1 -List 및 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는 잘 작동하고 questionsAndSeperators의 요소를 suffling하지만 방법 1questionsAndSeperators의 요소를 suffle 할 수 없습니다입니다. 의 문제는 무엇입니까? 방법 1 ?? 방법 1에서 잘못된 것이 있습니까?

답변

3

방법 1에서 모든 요소가 this.questionsAndSeperatorsnew List<Question>을 만듭니다. 그런 다음 new List<Question>의 모든 요소를 ​​섞습니다. 하지만 this.questionsAndSeperators의 요소를 섞어 놓지 않기 때문에 다른 요소를 뒤섞 지 않아야합니다.

방법 2에서는 ArrayList에 직접 액세스하고 ArrayList의 요소를 섞습니다.

+1

당신은 저를 때려 눕습니다, +1. – SuperOli

+0

나도 하하, +1 – NominSim

+0

아니오, 방법 2에서 나는'questionList'의 요소들을 겪고 있으며'questionandseparators'는 고통 스럽습니다! 메서드 2의 – Jaguar

0

버전 1에서는 "list"라는 변수에 할당되지만 "questionList"라는 변수에서 셔플을 수행하고 있습니다. 이 컴파일하는 것이 궁금합니다.

+0

죄송합니다, 실수로 나는'list'라고 썼습니다. method1의'questionList'였다. 수정 된 – Jaguar