这对我来说似乎是一团糟,我的大脑告诉我一定有更好的方法。
我在一个网页上有6个控件。
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
}做到这一点的最佳/最有效的方法是什么?
发布于 2012-04-27 23:51:38
重构从你的数据开始:避免printer_make_1,printer_make_2,...
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 == "")) )
...发布于 2012-04-27 23:49:23
如果你想提高可读性或在其他地方使用相同的逻辑,你可以重构到一个方法中:
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 != "");
}然后直接问:
if (AllControlsHaveAValue()) {
// do something
}发布于 2012-04-27 23:47:05
if(new[] { printer_make_1, printer_model_1 ...}.All(l => l.Text != string.Empty)
{
//do something
}您可能希望将其拆分以使其更具可读性:
var labels = new[] { printer_make_1, printer_model_1 ... };
if(labels.All(l => l.Text != string.Empty))
{
//do something
}https://stackoverflow.com/questions/10353718
复制相似问题