Как свернуть множество вложенных if-else без тернарного оператора - C#
Формулировка задачи:
Сейчас имеется код такого типа:
Кто-нибудь знает, как его можно красиво свернуть без тернарного оператора (ибо будет жутко)
if (useUpper) {
if (useDigits) {
if (useSymbols) {
multiplier = 2.014;
} else {
multiplier = 1.697;
}
} else {
if (useSymbols) {
multiplier = 1.712;
} else {
multiplier = 1.47;
}
}
} else {
if (useDigits) {
if (useSymbols) {
multiplier = 1.792;
} else {
multiplier = 1.409;
}
} else {
if (useSymbols) {
multiplier = 1.309;
} else {
multiplier = 1.208;
}
}
}Решение задачи: «Как свернуть множество вложенных if-else без тернарного оператора»
textual
Листинг программы
double[] list = new double[] { 1.208, 1.309, 1.409, 1.792, 1.47, 1.712, 1.697, 2.014 };
int index = ((useUpper ? 1 : 0) << 2) + ((useDigits ? 1 : 0) << 1) + (useSymbols ? 1 : 0);
multiplier = list[index];