编写检查 6 个函数的 bool 代码的最佳方法?

best way to write code of bool that check 6 functions?

我有这个代码:

          bool validInput = !string.IsNullOrWhiteSpace(reg_name_tbx.Text)
               && !string.IsNullOrWhiteSpace(reg_adr_tbx.Text)
           && !string.IsNullOrWhiteSpace(reg_phn_tbx.Text)
           && !string.IsNullOrWhiteSpace(reg_pwr_tbx.Text)
           && !string.IsNullOrWhiteSpace(reg_email_tbx.Text)
           && !string.IsNullOrWhiteSpace(reg_type_cbx.Text);

有没有更好的写法? 它正在检查所有文本框是否都有来自用户的有效输入..

如评论中所述,您不能使代码比现在更性能string.IsNullOrWhiteSpace 没有采用多个参数的重载,您必须单独检查每个字符串。

也就是说,如果你想让代码更简洁,你可以将检查封装在一个接受字符串数组的方法中:

public bool DoAllStringsHaveContent(params string[] input)
{
    foreach (var item in input)
    {
        if (string.IsNullOrWhiteSpace(item))
            return false;
    }
        
    return true;
}

然后你可以这样称呼它:

bool validInput = DoAllStringsHaveContent(reg_name_tbx.Text,
    reg_adr_tbx.Text, reg_phn_tbx.Text, reg_pwr_tbx.Text,
    reg_email_tbx.Text, reg_type_cbx.Text);

为了完整起见,如果您想在没有可重用方法的“one-liner”中执行此操作,您可以使用 LINQ:

bool validInput = new string[] 
    {
        reg_name_tbx.Text, reg_adr_tbx.Text, reg_phn_tbx.Text,
        reg_pwr_tbx.Text, reg_email_tbx.Text, reg_type_cbx.Text
    }.All(x => !string.IsNullOrWhiteSpace(x);

如果文本框都在表单上:

this.Controls.OfType<TextBox>().Any(tb => string.IsNullOrWhiteSpace(tb.Text))

如果他们在面板中,请将 this 替换为面板的名称

如果您有其他不应该包括的文本框,您可以添加一些其他条件,将候选文本框减少到您感兴趣的文本框;也许:

 this.Controls.OfType<TextBox>().Any(tb => tb.Name.StartsWith("reg") && string.IsNullOrWhiteSpace(tb.Text))