减少if语句中的条件

Win*_*Win 3 c# if-statement

当一个表单上的所有文本框都完成时,我有一个if语句来运行一些代码,

我检查所有文本框目前不为空的方式如下

if (txtUserId.Text != ""
                    && txtFirstName.Text != ""
                    && txtLastName.Text != ""
                    && txtCity.Text != ""
                    && txtSTate.Text != ""
                    && txtCountry.Text != "")
                {
                    // Some code
                }
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来写这个?

usr*_*usr 10

摘要检查成功能:

bool IsFilled(TextBox tb) { return tb.Text != ""; }
Run Code Online (Sandbox Code Playgroud)

然后你可以使用旧的,简化的代码,或者这个技巧:

var textBoxes = new [] { txtUserId, txtFirstName, ... };
if (textBoxes.All(tb => IsFilled(tb)) { ... }
Run Code Online (Sandbox Code Playgroud)

您获得的文本框越多,这可能就越具有可扩展性.

您还可以编写textBoxes.All(IsFilled)由于方法组转换为委托而导致的工作.这稍微高一点,而且更短.但我发现方法组转换难以理解和误导.其他人可能会问你"这是做什么的?" 这表明代码味道.我不推荐它.