无法找到一种简单的方法来定义我的问题,但我会尽力解释它。
我需要能够表示一系列预定义项目,我在程序中有数千个这样的选择实例,并且需要一个可以表示每个实例的项目选择的值(许多选项将重复)。
我使用Enum的第一个解决方案在这一点似乎没问题,但我似乎有一个问题...... Enum标志表示为每个唯一项目一位,64位是语言可以处理Enum的最大值(C# ),我有任意数量的值需要设置和取消设置。
示例解决方案1:
//Two dimensional map of instances
Instances[,]
//Item Enum Flags
Items { 0, 1, 2, 4 }
//Setting the selection
Instances[1000,1000].Selection.Set(Items.1)
Instances[1000,1000].Selection.Set(Items.2)
Instances[1000,1000].Selection.IsSet(Items.1) = true
Instances[1000,1000].Selection.IsSet(Items.2) = true
我的第二个解决方案是建立选择列表并使用ID号在实例中引用此选择。
示例解决方案2:
//Two dimensional map of instances
Instances[,]
//Dictionary
Dictionary<ID, List<Item>> Selections
//Enum for items (not flags)
Item { 0, 1, 2, 3, 4, 5 }
//Item list add
List<Item> Items
Items.Add(Item.0)
Items.Add(Item.1)
//Add Items to selections
Selections.Add(Items)
//Setting the selection
Instances[1000,1000].Selection = //ID of item list in Selections
//See if item is within selection
Selections[Instances[1000,1000].Selection].Contains(Item.1)
解决方案的要求是内存使用率低(我正在为移动应用程序开发),易于使用(我需要能够动态编辑它)。
哪种解决方案最好,考虑到我的要求和 我如何实现这一目标,或者简化它以满足我的要求?