简化复杂的If语句

 漂亮的花裙子 发布于 2023-01-20 20:20

好吧,我有一个Form,它接收Employee的级别,并根据他的级别启用一些选项Checkboxes.然而,我面临的问题是,对于我的应用程序的逻辑,每个选项都有特定的级别范围,所以我创建了一个丑陋的IF范围检查语句,我相信有更好的方法来实现.

代码:

if (level >= 1 && level < 3) {
    _items[0].Enabled = true;
    _items[1].Enabled = false;
    _items[2].Enabled = false;
    _items[3].Enabled = false;
    _items[4].Enabled = false;
    _items[5].Enabled = false;
    _items[6].Enabled = false;
    _items[7].Enabled = false;
}
else if (level >= 3 && level < 5) {
    _items[0].Enabled = true;
    _items[1].Enabled = true;
    _items[2].Enabled = false;
    _items[3].Enabled = false;
    _items[4].Enabled = false;
    _items[5].Enabled = false;
    _items[6].Enabled = false;
    _items[7].Enabled = false;
}
else if (level >= 5 && level < 7) {
    _items[0].Enabled = true;
    _items[1].Enabled = true;
    _items[2].Enabled = true;
    _items[3].Enabled = false;
    _items[4].Enabled = false;
    _items[5].Enabled = false;
    _items[6].Enabled = false;
    _items[7].Enabled = false;
}
else if (level >= 7 && level < 9) {
    _items[0].Enabled = true;
    _items[1].Enabled = true;
    _items[2].Enabled = true;
    _items[3].Enabled = true;
    _items[4].Enabled = false;
    _items[5].Enabled = false;
    _items[6].Enabled = false;
    _items[7].Enabled = false;
}
else if (level >= 9 && level < 11) {
    _items[0].Enabled = true;
    _items[1].Enabled = true;
    _items[2].Enabled = true;
    _items[3].Enabled = true;
    _items[4].Enabled = true;
    _items[5].Enabled = false;
    _items[6].Enabled = false;
    _items[7].Enabled = false;
}
else if (level >= 11 && level < 13) {
    _items[0].Enabled = true;
    _items[1].Enabled = true;
    _items[2].Enabled = true;
    _items[3].Enabled = true;
    _items[4].Enabled = true;
    _items[5].Enabled = true;
    _items[6].Enabled = false;
    _items[7].Enabled = false;
}
else if (level >= 13 && level < 15) {
    _items[0].Enabled = true;
    _items[1].Enabled = true;
    _items[2].Enabled = true;
    _items[3].Enabled = true;
    _items[4].Enabled = true;
    _items[5].Enabled = true;
    _items[6].Enabled = true;
    _items[7].Enabled = false;
}
else if (level >= 15 && level < 17) {
    _items[0].Enabled = true;
    _items[1].Enabled = true;
    _items[2].Enabled = true;
    _items[3].Enabled = true;
    _items[4].Enabled = true;
    _items[5].Enabled = true;
    _items[6].Enabled = true;
    _items[7].Enabled = true;
}

dasblinkenli.. 18

你可以用一点点数学来简化这个:

int on = (level+1)/2;
for (int i = 0 ; i != 8 ; i++) {
    _items[i].Enabled = (i < on);
}

第一行将1到16(包括1和16)范围内的数字转换为1到8(包括1和8)范围内的数字.然后循环遍历所有项目,并启用它们中的许多项目,如on前面计算的变量值所示.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有