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

C# 从另一个列表大小或int设置列表大小?,c#,list,unity3d,C#,List,Unity3d,我的脚本中有两个列表 public List<GameObject> l1 = new List<GameObject>(); public List<GameObject> l2= new List<GameObject>(); public List l1=新列表(); 公共列表l2=新列表(); 我想从l1列表大小设置l2列表大小。 我尝试了list.Capacity,但当我运行游戏时,Unity inspector中的列表大小仍然显示为

我的脚本中有两个列表

public List<GameObject> l1 = new List<GameObject>();
public List<GameObject> l2= new List<GameObject>();
public List l1=新列表();
公共列表l2=新列表();
我想从
l1
列表大小设置
l2
列表大小。 我尝试了
list.Capacity
,但当我运行游戏时,Unity inspector中的列表大小仍然显示为0 但当我调试
list.Capacity
时,它会显示出我的价值。
因此,我想从C#设置列表大小。

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

要更改容量,请执行以下操作:

public List l1=新列表();
公开名单l2;
void Start()
{
l2=新列表(l1.计数);
Debug.Log(“容量:+l2.Capacity”);
}
也要复制这些值(这将更改编辑器中显示的计数或大小):

public List l1=新列表();
公开名单l2;
void Start()
{
l2=新列表(l1.计数);
Debug.Log(“容量:+l2.Capacity”);
对于(int i=0;i
问题的关键在于,对于列表的容量、计数和大小的含义存在混淆。设置列表的容量不会影响列表的实际大小。列表的大小为0,因为列表中没有添加任何内容。大小(即计数)列表的大小是动态的,如果您继续向列表中添加项目,它将自动增加。这与大小为静态的数组不同

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


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

不需要微优化。如果您要扩展列表,请让它扩展,如果您想默认它,请选择一个您认为合理的常量。您是指大小还是指容量?因为“设置大小”的唯一方法NET列表的作用是向列表中添加元素。仔细看这个问题。OP希望使它们具有相同的容量而不是计数。我更新了我的答案,希望能够澄清误解。非常感谢。我尝试了'l2=新列表(l1.Count);Debug.Log(“容量:+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);
}
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);
}