私の問題を定義する簡単な方法が見つかりませんでしたが、できる限り説明しようと思います。
事前定義されたアイテムの選択を表すことができる必要があります。プログラムにはこれらの選択のインスタンスが何千もあり、インスタンスごとのアイテムの選択を表すことができる単一の値が必要です (多くの選択が繰り返されます)。
列挙型を使用した私の最初のソリューションは、この時点では問題ないように見えますが、問題があるようです...列挙型フラグは、一意の項目ごとに 1 ビットとして表され、言語が列挙型 (C#) に対して処理できる最大値は 64 ビットです。設定および設定解除する必要がある任意の数の値があります。
ソリューション例 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
私の 2 番目の解決策は、選択リストを作成し、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)
ソリューションの要件は、メモリ使用量が少ないこと (モバイル アプリケーション用に開発中)、使いやすさ (オンザフライで編集できる必要があること) です。
私の要件を考慮して、どのソリューションが最適でしょうか?また、どのようにこれを達成したり、要件を満たすために単純化したりできますか?