我这里有一些有缺陷的逻辑..我的目标是如果所有字段都有 "" 值,则返回 true,否则返回 false。我如何在 C# 中解决这个问题?
dict_items
答案 0 :(得分:3)
我相信这样的事情应该可行。我找不到所有这些变量属于哪个类,但是用正确的类替换 var ,我认为这应该可行。
逻辑:将所有变量添加到列表中,如果所有列表都匹配 GetAttribute("value") == ""
,则使用 lambda 函数返回 changeFalse(index) {
this.setState((prevState) => ({
values: {
...prevState.values,
[prevState.values[index].add]: !prevState.values[index].add,
},
}));
}
答案 1 :(得分:2)
为了从评论中说明@madreflection 的(正确)建议,请考虑以下代码:
public bool CheckFieldsAreEmpty()
{
Driver.WaitForElementValueNull(smtpHostInputField);
if (smtpHostInputField.GetAttribute("value") != "")
return false;
Driver.WaitForElementValueNull(smtpPortInputField);
if (smtpPortInputField.GetAttribute("value") != "")
return false;
Driver.WaitForElementValueNull(usernameInputField);
if (usernameInputField.GetAttribute("value") != "")
return false;
Driver.WaitForElementValueNull(passwordInputField);
if (passwordInputField.GetAttribute("value") != "")
return false;
Driver.WaitForElementValueNull(senderInputField);
if (senderInputField.GetAttribute("value") != "")
return false;
Driver.WaitForElementValueNull(receiverInputField);
if (receiverInputField.GetAttribute("value") != "")
return false;
return true;
}
当然,正如 @Daniel-Lord’s answer 所强调的那样,您可以使用循环或 LINQ 查询来集中这种重复的逻辑。
答案 2 :(得分:0)
解决此问题的另一种方法是将 WaitForElementValueNull
调用和空字符串检查提取到单独的方法中。类似的东西:
private static bool WaitForElementValueNullAndEmpty(InputFieldType inputField)
{
Driver.WaitForElementValueNull(inputField);
return inputField.GetAttribute("value") == "";
}
public bool CheckFieldsAreEmpty()
{
return WaitForElementValueNullAndEmpty(smtpHostInputField) ||
WaitForElementValueNullAndEmpty(smtpPortInputField) ||
WaitForElementValueNullAndEmpty(usernameInputField) ||
WaitForElementValueNullAndEmpty(passwordInputField) ||
WaitForElementValueNullAndEmpty(senderInputField) ||
WaitForElementValueNullAndEmpty(receiverInputField);
}
上面的代码将匹配提供的算法,但是如果您想检查所有值是否为空,则应将 ||
替换为 &&
(正如 Jeremy Caney 所注意到的)