请将值存储到收集中,建议

Tom*_*mas 1 .net collections types

新手问题.我应该使用什么样的集合类型来存储这样的结构?

Files collection
---------------
FileId: Int
FileName : String
Path: String
Run Code Online (Sandbox Code Playgroud)

我需要将几个文件数据存储到该集合中,找到Path by FileId字段,通过FileId字段删除项目.

Alb*_*nbo 8

我会创建一个Dictionary自定义类作为值:

public class FileInfo
{
    public string FileName {get;set;}
    public string Path {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

并存储在一个Dictionary<int, FileInfo>字典中,你在那里保持FileId关键Dictionary.


Cod*_*ray 6

由于您需要与每个值实例关联的多个预定义信息,因此我首先要定义一个结构来保存每个文件所需的信息:

public struct CustomFileInfo  //pick a name that avoids conflicts with System.IO
{
    public readonly int FileId;
    public readonly string FileName;
    public readonly string Path;

    // constructor
    public CustomFileInfo(int fileId, string fileName, string path)
    {
        this.FileId = fileId;
        this.FileName = fileName;
        this.Path = path;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我会使用泛型集合(例如a List<T>)来保存该结构的实例:

List<FileInfo> myFiles = new List<FileInfo>();
Run Code Online (Sandbox Code Playgroud)

另外,您也可以使用Dictionary<TKey, TValue>,用FileId的键和FileInfo结构的价值.例如:

Dictionary<int, FileInfo> myFiles = new Dictionary<int, FileInfo>();
Run Code Online (Sandbox Code Playgroud)

字典的优点是它在通过ID搜索文件时提供更快的查找时间.这是因为字典是使用哈希表在内部实现的.

编辑:请注意,可变结构是邪恶的.如果您需要能够更改描述文件的各条信息(我无法想象为什么会这样),您应该声明CustomFileInfoclass而不是struct.