Day*_*yan 0 c# .net-3.5 windows-mobile-6.5 windows-embedded-compact
我有以下几点:
public static class LocalFileModelList
{
public static List<LocalFileModel> ModelList = new List<LocalFileModel>();
}
public class LocalFileModel
{
public string Name { get; set; }
public string Extension { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后是一种从目录读取所有文件的方法。
public static List<LocalFileModel> GetAllFiles(string path)
{
var files = Directory.GetFiles(path, "*.*");
foreach(var file in files)
{
var Extension = Path.GetExtension(file);
var Filename = Path.GetFileNameWithoutExtension(file);
var model = new LocalFileModel
{
Name = Filename,
Extension = Extension,
};
LocalFileModelList.ModelList.Add(model);
}
return LocalFileModelList.ModelList;
}
Run Code Online (Sandbox Code Playgroud)
我注意到,在逐步执行代码时,当我创建的新实例时LocalFileModel,用数据填充它,然后将其添加到列表中。列表自动创建了另外三个类型为的实例null。一旦这三个对象各自填充了对象,它将再次创建更多的空实例...

我现在才意识到这一点,这是正常的吗?
List<T>具有一个内部数组,该数组具有一定的容量,该容量始终等于或大于列表中的项目数。
list.Capacity >= list.Count
Run Code Online (Sandbox Code Playgroud)
您实际上可以告诉列表其内部阵列应使用的容量。
new List<int>(capacity: 5);
Run Code Online (Sandbox Code Playgroud)
当插入一个项目并且数组达到其容量时,列表将创建一个新数组,其大小是先前大小的两倍,以容纳新元素。因此,在您的情况下,如果要插入第5个项目,则列表将分配一个具有8个插槽的新内部数组(其中5个将被填充)。
有关更多详细信息,请在此处检查实现。