繁体   English   中英

如何在没有 if else 语句的情况下验证这些变量?

[英]How can I validate these variables without an if else statement?

我对 c# 很陌生,所以请原谅我缺乏知识。 我只是想检查以下内容:

  • “卡号长度”= 16
  • “卡密码长度”= 3
  • "CardNameHasSpace" 0 我不想使用 if else 语句,还有其他方法吗?

编码:

public bool Validate()

        {

            CardNumberLength = Convert.ToString(GetCardNumber()).Length;

            CardPINLength = Convert.ToString(GetCardPIN()).Length;

            CardNameHasSpace = GetCardName().IndexOf(" ");

        }

你可以只返回布尔结果:

return CardNumberLength == 16 && CardPINLength == 3 && CardNameHasSpace >= 0;

如果您绝对必须在没有 if 测试的情况下执行此操作,则可以在 return 语句中将它们混合在一起。 它只是表达相同逻辑的不同语法。 如果没有测试,我可能不会建议这样做。

public bool Validate()
{
    return Convert.ToString(GetCardNumber()).Length == 16 //replaces CardNumberLength
        && Convert.ToString(GetCardPin()).Length == 3 // replaces CardPINLength
        && GetCardName().IndexOf(" ") < 1; // replaces CardNameHasSpace
}
    public bool Validate()
    {

        string CardNumberLength = GetCardNumber().ToString().Length;
        string CardPINLength = GetCardPIN().ToString().Length;
        bool CardNameHasSpace = GetCardName().Contains(" ");
        
        return CardNumberLength == 16 && CardPINLength == 3 && !CardNameHasSpace
    }

在对象上使用 .ToString() 比 Convert.ToString() 好得多,你也可以检查字符串内部是否包含使用 .Contains(string) 函数的字符串。

public bool Validate()
{
    CardNumberLength = Convert.ToString(GetCardNumber()).Length;
    CardPINLength = Convert.ToString(GetCardPIN()).Length;
    CardNameHasSpace = GetCardName().IndexOf(" ");

    return CardNumberLength == 16 && CardPINLength == 3 && CardNameHasSpace > -1;
}

或者

public bool Validate()
{
   CardNumberLength = Convert.ToString(GetCardNumber()).Length;
   CardPINLength = Convert.ToString(GetCardPIN()).Length;
   CardNameHasSpace = GetCardName().IndexOf(" ");

   if (CardNumberLength != 16)
      return false;
      
   if (CardPINLength != 3)
      return false;
      
   if (CardNameHasSpace == -1)
      return false;
  
   return true;
}

也许,这对你有帮助:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM