为了账号安全,请及时绑定邮箱和手机立即绑定

C#对象字典

C#对象字典

C#
POPMUISE 2021-05-16 16:19:40
以下各项的最佳数据结构是什么:我有一个自定义对象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);
查看完整描述

1 回答

?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

如果要使用该结构,则应使用Dictionary<Guid, Package>:


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()

   {

       //Remember to initialize your List<T>'s here

   }

}

创建一个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());


查看完整回答
反对 回复 2021-05-23
  • 1 回答
  • 0 关注
  • 118 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信