从另一个列表大小或int设置列表大小?

时间:2017-06-02 18:28:59

标签: c# list unity3d

我的剧本中有两个列表。

public List<GameObject> l1 = new List<GameObject>();
public List<GameObject> l2= new List<GameObject>();

我想从l2列表大小设置l1列表大小。 我已经尝试了list.Capacity但是当我运行游戏时,Unity检查器中的列表大小仍然显示为0 但是,当我调试list.Capacity时,它会显示我的价值。 所以我想从C#设置我的列表大小。

2 个答案:

答案 0 :(得分:0)

您必须使用List.Countl2构造函数中设置List的容量,并且必须在函数中完成。它从编辑器中取l1的大小,并用它来设置l2的大小。

更改容量

public List<GameObject> l1 = new List<GameObject>();
public List<GameObject> l2;

void Start()
{
    l2 = new List<GameObject>(l1.Count);
    Debug.Log("Capacity: " + l2.Capacity);
}

要复制值(这将更改编辑器中显示的计数或大小

public List<GameObject> l1 = new List<GameObject>();
public List<GameObject> l2;

void Start()
{
    l2 = new List<GameObject>(l1.Count);
    Debug.Log("Capacity: " + l2.Capacity);

    for (int i = 0; i < l1.Count; i++)
    {
        l2.Add(l1[i]);
    }
    Debug.Log("Count: " + l2.Count);
}

答案 1 :(得分:0)

问题的关键在于,列表的容量,数量和大小意味着什么。设置列表的容量不会影响列表的实际大小。列表的大小为0,因为列表中没有添加任何内容。列表的大小(即计数)是动态的,如果您继续向列表中添加项目,它将自动增加。这与大小为静态的数组不同。

列表的容量用于优化列表的性能。即如果您知道列表中只有X个条目,则可以将容量设置为X.但是,如果添加的条目多于X,则列表需要重新构建以处理其他条目。这是自动完成的。

如果您想要一个具有静态大小的数据结构,那么数组将是更好的选择。