IF-IF-Else并不像我需要的那样工作

时间:2014-12-24 10:15:12

标签: c#

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

我想要用户输入的错误处理;我有两个字段CustomerIDCompany

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

可能有3个错误:

  1. CustomerID已存在
  2. 公司名称无效
  3. CustomerID AND Company同时无效
  4. 通过上面的示例,else是最后一个if(companyInvalid)。我怎样才能处理只有在1和2不匹配时才执行的其他操作?

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

6 个答案:

答案 0 :(得分:4)

嗯,你可以说得非常明确:

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
}

答案 1 :(得分:3)

如果我理解你的问题,如果customerIDExists为真,那么else会触发。

试试这个

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

我已经添加了一个否则是第二个条件。现在你的应用程序将检查customerIDExists是否存在,如果不存在,它将检查companyInvalid如果不存在则会将用户添加到数据库中。

现在,如果这两个都不正确会发生什么?您只会向用户显示错误消息,当他们修复该问题并发现他们还有另一个您没有告诉他们的消息时,这会很烦人!我的建议是使用一个错误列表,如果没有任何保存到数据库:

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;

答案 2 :(得分:0)

您可以使用变量:

bool isValid = true;

if(customerIDExists)
{
    errorMessage = "...";
    isValid = false;
}

if(companyInvalid)
{
    errorMessage = "...";
    isValid = false;
}

if(isValid)
{
    // Add user to DB
}

答案 3 :(得分:0)

你可以尝试旧技术:

do {
    if(customerIDExists)
    {
        errorMessage = "...";
        break;
    }
    if(companyInvalid)
    {
        errorMessage = "...";
        break;
    }
    // All is ok.
} while (false);

答案 4 :(得分:0)

如果您想显示所有消息并且在第一次出错后没有破坏证明,您可以使用以下内容:

List<string> errorMessages = new List<string>();
        if (customerIDExists)
        {
            errorMessages.Add("...");
        }
        if (companyInvalid)
        {
            errorMessages.Add("...");
        }

        if (errorMessages.Count == 0) //Valid
        {

        }
        else //Invalid
        {

        }

答案 5 :(得分:0)

我假设您要报告所有错误,而不仅仅是遇到的错误。

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
}