[英]How can I validate these variables without an if else statement?
我对 c# 很陌生,所以请原谅我缺乏知识。 我只是想检查以下内容:
编码:
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.