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

标签 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

提前致谢。

最佳答案

问题是,据我了解,Repeat 只是重复引用相同的 List 实例。 我会这样重构它:

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

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

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

关于C# List<List<object[]>>() 问题 - 奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40948509/

相关文章:

c# - 更新应用程序时的 WP7 隔离存储

c# - Unity C# - 当同时拥有 OnTriggerExit 和 OnTriggerEnter 时,仅调用 OnTriggerExit

c# - RTS 游戏设计和代码组织

c# - 分发用 XNA 编写的 PC 游戏

python - 在 Python 中将列表推导式转换为 For 循环

c# - 返回一个实例

c# - 将 LINQ 匿名类型转换为 IList<> 时出错

javascript - C# - Asp.Net MVC 中的时区问题

python - python中的列表操作

c# - 根据在另一个列表 C# 中找到的值对列表进行排序