IF-IF-Else 不能按我需要和想要的方式工作
本文关键字:方式 工作 IF-IF-Else 不能按 | 更新日期: 2023-09-27 18:35:15
我需要知道如何以高效和智能的方式处理我的问题:
我想要对用户的输入进行错误处理;我有 2 个字段CustomerID
和Company
:
if (customerIDExists)
{
errorMessage = "...";
}
if (companyInvalid)
{
errorMessage = "...";
}
else
{
// Add user to DB
}
可能有 3 个错误:
- 客户 ID 已存在
- 公司名称无效
- 客户 ID 和公司同时无效
在上面的例子中,else 是最后一个 if (companyInvalid)。我如何处理仅在 1 和 2 if 不匹配时执行的其他问题?
否则,如果不对,因为我必须检查所有机会。
好吧,你可以把它说得非常明确:
if (customerIDExists)
{
...
}
if (companyInvalid)
{
...
}
if (!customerIDExists && !companyInvalid)
{
// Add user to DB
}
或者只是使用您没有收到错误消息的事实:
string errorMessage = null;
if (customerIDExists)
{
errorMessage = ...;
}
if (companyInvalid)
{
errorMessage = ...; // Don't forget it could already be non-null!
}
if (errorMessage == null)
{
// No error message, so we must be fine
// Add user to DB
}
如果我理解你的问题,如果 customerIDExists 是真的,其他人就会被触发。
试试这个
if(customerIDExists)
{
errorMessage = "...";
}
else if(companyInvalid)
{
errorMessage = "...";
}
else
{
// Add user to DB
}
我在第二个条件中添加了一个 else if。现在,您的应用程序将检查 customerID 是否有效,如果没有,它将检查公司是否无效,否则会将用户添加到数据库中。
现在,如果这两个都不正确会发生什么?您只会向用户显示错误消息,当他们修复该问题并发现他们有另一个您没有告诉他们的问题时,这会很烦人!我的建议是使用错误列表,如果没有,则保存到数据库:
var errors = new List<string>();
if(customerIDExists)
{
errors.Add("Customer exists");
}
if(companyInvalid)
{
errors.Add("Company invalid");
}
if(!errors.Any())
{
// Add user to DB
}
return errors;
您可以使用变量:
bool isValid = true;
if(customerIDExists)
{
errorMessage = "...";
isValid = false;
}
if(companyInvalid)
{
errorMessage = "...";
isValid = false;
}
if(isValid)
{
// Add user to DB
}
你可以尝试旧技术:
do {
if(customerIDExists)
{
errorMessage = "...";
break;
}
if(companyInvalid)
{
errorMessage = "...";
break;
}
// All is ok.
} while (false);
如果你想显示所有消息,并且在第一个错误后不破坏证明,你可以使用这样的东西:
List<string> errorMessages = new List<string>();
if (customerIDExists)
{
errorMessages.Add("...");
}
if (companyInvalid)
{
errorMessages.Add("...");
}
if (errorMessages.Count == 0) //Valid
{
}
else //Invalid
{
}
我假设您希望报告所有错误,而不仅仅是遇到的第一个错误。
var errors = new List<string>();
if (customerIDExists)
{
errors.Add("customer id exists");
}
if (companyInvalid)
{
errors.Add("company is invalid");
}
if(errors.Any())
{
// display all error messages
}
else
{
// Add user to DB
}