猿问

C#对象字典

以下各项的最佳数据结构是什么:我有一个自定义对象


public class Package

{

   private Guid packageId;

   private List<Guid> contracts;

   private List<Guid> states;

   public List<Guid>Contracts {get;set;}

   public List<Guid>States {get;set;}

   public Guid PackageId { get; set; }

   public Package()

   {

    ....

   }

}

我将拥有一个List<Packages>包含和共享一个公共ID(PackageId)的属性。我将在运行时(并非全部在初始化时)将Packages对象中的Guid添加到Package对象中的不同属性(状态,合同等)。我如何最好地构造类,以便在对象初始化后添加对象的各种属性?示例,结构,使我可以执行以下操作:


var List<Package> Packages = new List<Package>;

Packages[aGuid].Contracts.Add(Guid);


POPMUISE
浏览 119回答 1
1回答

斯蒂芬大帝

如果要使用该结构,则应使用Dictionary<Guid, Package>:public class Package{&nbsp; &nbsp;private Guid packageId;&nbsp; &nbsp;private List<Guid> contracts;&nbsp; &nbsp;private List<Guid> states;&nbsp; &nbsp;public List<Guid>Contracts {get;set;}&nbsp; &nbsp;public List<Guid>States {get;set;}&nbsp; &nbsp;public Guid PackageId { get; set; }&nbsp; &nbsp;public Package()&nbsp; &nbsp;{&nbsp; &nbsp; &nbsp; &nbsp;//Remember to initialize your List<T>'s here&nbsp; &nbsp;}}创建一个Dictionary:var packages = new Dictionary<Guid, Package>();然后,您创建一个新包:var package = new Package();将其添加到字典中:packages[package.PackageId] = package;-或者-packages.Add(package.PackageId, package);两者之间的区别在于,.Add如果已经存在,则将会抛出异常,PackageId而[]版本只会覆盖该异常。现在,您可以按需要访问它:packages[SomePackageId].Contracts.Add(Guid.NewGuid());
随时随地看视频慕课网APP
我要回答