编写检查 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))
我有这个代码:
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))