当表单上的所有文本框都完成时,我有一个 if 语句来运行一些代码,
下面是我检查所有文本框是否为空的方法
if (txtUserId.Text != ""
&& txtFirstName.Text != ""
&& txtLastName.Text != ""
&& txtCity.Text != ""
&& txtSTate.Text != ""
&& txtCountry.Text != "")
{
// Some code
}
有没有更好的写法?
最佳答案
将 checkout 抽象为一个函数:
bool IsFilled(TextBox tb) { return tb.Text != ""; }
然后你可以使用旧的、简化的代码,或者这个技巧:
var textBoxes = new [] { txtUserId, txtFirstName, ... };
if (textBoxes.All(tb => IsFilled(tb)) { ... }
您获得的文本框越多,这可能更具可扩展性。
您还可以编写 textBoxes.All(IsFilled)
,由于方法组转换为委托(delegate),因此可以正常工作。这稍微性能更高,而且更短。不过,我发现方法组转换很难理解和误导。其他人可能会问您“那有什么作用?”这表明有代码味道。我不推荐它。
关于c# - 减少 if 语句中的条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18980218/