首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有更好的方法来组织这个if语句?

有没有更好的方法来组织这个if语句?
EN

Stack Overflow用户
提问于 2012-04-27 23:45:18
回答 7查看 185关注 0票数 4

这对我来说似乎是一团糟,我的大脑告诉我一定有更好的方法。

我在一个网页上有6个控件。

代码语言:javascript
复制
if (printer_make_1.Text != "" && printer_model_1.Text != "" && printer_make_2.Text != "" && printer_model_2.Text != "" && printer_make_3.Text != "" && printer_model_3.Text != "")
{
  // Do something
}

做到这一点的最佳/最有效的方法是什么?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2012-04-27 23:51:38

重构从你的数据开始:避免printer_make_1printer_make_2,...

代码语言:javascript
复制
class PrinterData
{
   public string Make { get; set; }
   public string Model { get; set; }
}

PrinterData[] printers = new PrinterData[3];  //or use a List<>

printers[0] = new PrinterData { Make = "PH", Model = "1A" };
...

if (printers.All(p => ! (p.Make == "" || p.Model == "")) )
  ...
票数 5
EN

Stack Overflow用户

发布于 2012-04-27 23:49:23

如果你想提高可读性或在其他地方使用相同的逻辑,你可以重构到一个方法中:

代码语言:javascript
复制
public Boolean AllControlsHaveAValue() {
    return (printer_make_1.Text != ""
        && printer_model_1.Text != ""
        && printer_make_2.Text != ""
        && printer_model_2.Text != ""
        && printer_make_3.Text != ""
        && printer_model_3.Text != "");
}

然后直接问:

代码语言:javascript
复制
if (AllControlsHaveAValue()) {
    // do something
}
票数 6
EN

Stack Overflow用户

发布于 2012-04-27 23:47:05

代码语言:javascript
复制
if(new[] { printer_make_1, printer_model_1 ...}.All(l => l.Text != string.Empty)
{
    //do something
}

您可能希望将其拆分以使其更具可读性:

代码语言:javascript
复制
var labels = new[] { printer_make_1, printer_model_1 ... };
if(labels.All(l => l.Text != string.Empty))
{
    //do something
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10353718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档