C#List <list <object []>&gt;()问题 - 奇怪的行为

时间:2016-12-03 13:51:27

标签: c# list xna

我一直试图做以下事情:

public List<List<object[]>> Queue = new List<List<object[]>>();
Queue = InitList(MaxLayerCapability, new List<object[]>());

具有

public List<T> InitList<T>(int count, T initValue)
        {
            return Enumerable.Repeat(initValue, count).ToList();
        }

所以这就是问题所在:

Queue[2].Add(new object[] { "Draw", "Test" });

            for ( int i = 0; i < MaxLayerCapability; i++)
            {
                Console.WriteLine(i + ">" + Queue[i].Count);
                //Operate(Queue[i], i);
            }

出于某种原因,我希望Queue [2]包含元素,而所有其他列表(例如,Queue [0])的计数应为0。

在某种程度上,将所有元素推入队列,任何想法?

这是我得到的:

0>1
1>1
2>1
3>1
4>1
5>1

提前致谢。

1 个答案:

答案 0 :(得分:2)

问题是,据我所知,Repeat只重复引用同一个List实例。 我会这样重构:

public IEnumerable<T> InitList<T>(int count)  
{
  for (int i=0;i<count; i++)
  {
     yield return Activator.CreateInstance<T>();
  }            
}

如果我以这种方式使用fucntion,我会看到正确的结果:

Queue = InitList<List<object[]>>(3).ToList();