如何减少if语句冗余
How to reduce if statement redundancy
我是 C# 的新手,正在制作一个简单的成绩计算器作为学习的一种方式。
我有 6 个文本框供用户输入数字,然后旁边会显示一个字母等级。一切正常,但它似乎非常多余,因为我有 6 个成绩要转换,并且每个有 5 个 if 语句只是为了显示字母,然后另一个用于平均成绩。
我想有办法减少冗余
if (grade1 >= 80)
{
labelGrade1.Text = "A";
}
else if (grade1 >= 70 && grade1 <= 79)
{
labelGrade1.Text = "B";
}
if (grade2 >= 80)
{
labelGrade2.Text = "A";
}
else if (grade2 >= 70 && grade2 <= 79)
{
labelGrade2.Text = "B";
}
参见下面的冗余代码:
你无法避免一些 if 语句。他们是必要的。
更多详情
我只能回答问题。有很多冗余代码,所以我删除了它!我怎么知道这是OP的错字?话虽如此,我不会很快删除 2-3 个 if 语句。 5-6 if语句,则yes。最后,再次回顾了这个问题,Ian Mercer 的答案看起来不错而且不太复杂。但它假定每种等级的评分等级都相同。
创建封装重复代码的方法:
string LetterFromGrade(int grade)
{
if (grade > 79) return "A";
if (grade > 69) return "B";
...
}
然后到处使用那个方法。
labelGrade1.Text = LetterFromGrade(grade1);
labelGrade2.Text = LetterFromGrade(grade2);
...
您可以像这样重构您的代码:
Action<int, Label> updateLabel = (value, label) =>
{
if ( value >= 80 )
label.Text = "A";
else
if ( value >= 70 )
label.Text = "B";
};
updateLabel (grade1, labelGrade1);
updateLabel (grade2, labelGrade2);
更好闻。
你当然可以创建一个 class 方法而不是本地方法,但如果它只在一个方法中使用,本地更好,因为 class 方法允许其他代码调用它,而这代码不适用于他们。
我是 C# 的新手,正在制作一个简单的成绩计算器作为学习的一种方式。 我有 6 个文本框供用户输入数字,然后旁边会显示一个字母等级。一切正常,但它似乎非常多余,因为我有 6 个成绩要转换,并且每个有 5 个 if 语句只是为了显示字母,然后另一个用于平均成绩。
我想有办法减少冗余
if (grade1 >= 80)
{
labelGrade1.Text = "A";
}
else if (grade1 >= 70 && grade1 <= 79)
{
labelGrade1.Text = "B";
}
if (grade2 >= 80)
{
labelGrade2.Text = "A";
}
else if (grade2 >= 70 && grade2 <= 79)
{
labelGrade2.Text = "B";
}
参见下面的冗余代码:
你无法避免一些 if 语句。他们是必要的。
更多详情
我只能回答问题。有很多冗余代码,所以我删除了它!我怎么知道这是OP的错字?话虽如此,我不会很快删除 2-3 个 if 语句。 5-6 if语句,则yes。最后,再次回顾了这个问题,Ian Mercer 的答案看起来不错而且不太复杂。但它假定每种等级的评分等级都相同。
创建封装重复代码的方法:
string LetterFromGrade(int grade)
{
if (grade > 79) return "A";
if (grade > 69) return "B";
...
}
然后到处使用那个方法。
labelGrade1.Text = LetterFromGrade(grade1);
labelGrade2.Text = LetterFromGrade(grade2);
...
您可以像这样重构您的代码:
Action<int, Label> updateLabel = (value, label) =>
{
if ( value >= 80 )
label.Text = "A";
else
if ( value >= 70 )
label.Text = "B";
};
updateLabel (grade1, labelGrade1);
updateLabel (grade2, labelGrade2);
更好闻。
你当然可以创建一个 class 方法而不是本地方法,但如果它只在一个方法中使用,本地更好,因为 class 方法允许其他代码调用它,而这代码不适用于他们。