找不到一个简单的方法来定义我的问题,但我会尽力解释它。
我需要能够表示预定义项目的选择,我在程序中有数千个这样的选择实例,并且需要一个可以表示每个实例的项目选择的单个值(许多选择会重复)。
在这一点上,我使用 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)
该解决方案的要求是低内存使用(我正在为移动应用程序开发它),易于使用(我需要能够即时编辑它)。
考虑到我的要求,哪种解决方案是最好的,我怎样才能做到这一点,或者简化它以满足我的要求?