Robaticus дал вам правильный ответ, но в комментарии, а не в посте, поэтому я остановлюсь на нем.
У нас есть три флага, которые могут принимать каждое из трех состояний.Таким образом, существует 3 * 3 * 3 = 27 возможных вариантов.
Когда сталкиваешься со сложной логикой if..then и таким маленьким адресным пространством, вообще не имеет смысла пытаться закодировать все if ifthen.Вместо этого один трехмерный массив содержит всего 27 элементов.
const int None = 0;const int Неактивно = 1;const int Active = 2;
private int ParseFlag (строка Flag) {switch (Flag) {case "N": return None;регистр "I": возврат неактивен;регистр "A": возврат активен;по умолчанию выбрасывать новое исключение (string.Format («Получил значение флага {0}, но ожидал N, I или A», Flag));}}
public Lookup FlagResult (строка Flag1, строка Flag2, строка Flag3) {return FlagData [ParseFlag (Flag1), ParseFlag (Flag2), ParseFlag (Flag3)];}
Я позволю вам построить массив.