IF-IF-Else 不能按我需要和想要的方式工作

本文关键字:方式 工作 IF-IF-Else 不能按 | 更新日期: 2023-09-27 18:35:15

我需要知道如何以高效和智能的方式处理我的问题:

我想要对用户的输入进行错误处理;我有 2 个字段CustomerIDCompany

if (customerIDExists)
{
    errorMessage = "...";
}
if (companyInvalid)
{
    errorMessage = "...";
}
else
{
    // Add user to DB
}

可能有 3 个错误:

  1. 客户 ID 已存在
  2. 公司名称无效
  3. 客户 ID 和公司同时无效

在上面的例子中,else 是最后一个 if (companyInvalid)。我如何处理仅在 1 和 2 if 不匹配时执行的其他问题?

否则,如果不对,因为我必须检查所有机会。

IF-IF-Else 不能按我需要和想要的方式工作

好吧,你可以把它说得非常明确:

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
}