多个选项的更有效的“if”语句
本文关键字:if 语句 选项 有效 | 更新日期: 2023-09-27 18:31:27
我想知道是否有人有一些想法可以使以下内容更短,更高效。我有 3 个下拉菜单,用户可以在其中选择年龄下限、年龄上限和性别。他们可以随心所欲地选择任意数量,甚至没有。然后我有一个 if 语句,它将根据他们选择的内容执行一个过程。 假设 l,u 和 g 是传递的参数。
if((age > l && age < u && gender == g)
|| (age > l && age < u && g == null)
|| (age > l && u == null && g == null)
|| (age < u && gender == g && l == null)
|| (age < u ...etc etc)
有没有更好的方法来形成这个而不是一个乏味的if语句?
您可以通过为每个条件创建一个变量来使其更具可读性。
var lowerAgeLimitMet = (l == null || age > l);
var upperAgeLimitMet = (u == null || age < u);
var genderLimitMet = (g == null || gender == g);
if(lowerAgeLimitMet && upperAgeLimitMet && genderLimitMet)
{
//Do work here
}
这应该有效:
if((age > l || l == null) && (age < u || u == null) && (gender == g || g == null))
...
将lowerLimit
定义为int.MinValue
,upperLimit
定义为int.MaxValue
,并让g
null
。
然后这将处理所有情况:
int lowerLimit;
if (!int.TryParse(dropdown.Text, out lowerLimit))
{
lowerLimit = int.MinValue;
}
int upperLimit;
if (!int.TryParse(dropdown.Text, out upperLimit))
{
upperLimit = int.MaxValue;
}
// Same checks for gender
if(age > lowerLimit && age < upperLimit && (g== null || gender == g))
{
// Your code here
}
如果我们在打代码高尔夫:
if (age > (l ?? int.MinValue) && age < (u ?? int.MaxValue) && gender == (g ?? gender))
编辑:固定每条评论的可变顺序