Извинения за довольно неопределенную природу этого вопроса, мне официально никогда не преподавали, программируя, и Google довольно бесполезен парню самоусовершенствования как я в этом случае, поскольку ключевые слова довольно неоднозначны.
Я пишу несколько функций, которые кодируют и декодируют список опций в Длинное, таким образом, они могут легко быть розданы приложение, Вы знаете такого рода вещь:
1 - Apple
2 - Оранжевый
4 - Банан
8 - Слива
и т.д.В этом случае номер 11 представил бы Apple, Orange & Plum.
У меня есть он работа, но я вижу используемый все время, так предположите, что существует общее название для техники и несомненно все виды лучшей практики и умных алгоритмов, которые являются в данный момент только вне моей досягаемости.
Править: Благодаря всем я знал, что ответ появится быстро :)
Битовые флаги. Это метод, используемый как часть битовой маски.
0001 - Apple
0010 - Оранаж
0100 - Банан
1000 - Plum
Каждая единица - это помеченный бит.
Теперь вы можете легко выполнять побитовые операции, используя эти числа:
if((11 & Apple) == Apple) // The Apple Flag is set
{
// Do Something
}
Битовое поле: http://en.wikipedia.org/wiki/Bit_field
по справке к атрибуту c# Flags я собираюсь перейти к битовому полю или набору флагов
вроде как связано, в аппаратуре есть также one-hot encoding, хотя это подразумевает, что вы не получите комбинации установленных флагов
.