C# 与List和ArrayList的使用作斗争

C# 与List和ArrayList的使用作斗争,c#,list,arraylist,C#,List,Arraylist,我正在尝试使用以下代码来填充数组列表-问题和分隔符的元素。我用两种方法来做这件事。 方法1:- List<Question> questionList = this.questionsAndSeperators.Cast<Question>().ToList(); Random rng = new Random(); int questionCount = questionList.Count; while (questionCount > 1) { que

我正在尝试使用以下代码来填充
数组列表
-
问题和分隔符
的元素。我用两种方法来做这件事。
方法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;
}
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;
}
这里的
问题
是一门课。
方法2运行良好,可以覆盖
问题和分隔符的元素,但方法1无法覆盖
问题和分隔符的元素。方法1的问题是什么??

我在方法1中做错了什么吗?

在方法1中,您创建了一个
新列表
,其中包含
此问题和分隔符的所有元素。
然后洗牌
新列表的所有元素。但是你不能洗牌this.questions和separator的元素,因为它是另一个数组


在方法2中,您直接访问
ArrayList
,并在版本1中洗牌
ArrayList

的元素,您被分配给一个名为“list”的变量,但随后您在一个名为“questionList”的变量中洗牌。我想知道这是怎么编译的。

对不起,我错写了
列表
。在方法1中是
问题列表
。编辑否否,在方法2中,我正在填充
问题列表
问题和分隔符
的元素!在方法2
questionList
questionandseparator
中,它们是相同的对象,而方法1中它们不是相同的对象same@Jaguar这就是他所说的;通过说
questionList=this.questions和separator
您使它们引用相同的
对象
,在前面的方法中,元素被复制到一个新的
对象
,因此洗牌只在新的
对象
中发生。