【发布时间】:2022-01-23 22:05:44
【问题描述】:
我不明白我在犯什么错误。
我正在计算一些学生的总体平均数,并根据这个平均数为班级提供一个概念。
public enum Grade
{
A,
B,
C,
D,
E
}
var overallAverage = fullScore / numberStudents;
Grade generalGrade;
var cases = new Dictionary<Func<decimal,bool>,Grade>
{
{x => overallAverage < 2, generalGrade = Grade.E},
{x => overallAverage < 4, generalGrade = Grade.D},
{x => overallAverage < 6, generalGrade = Grade.C},
{x => overallAverage < 8, generalGrade = Grade.B},
{x => overallAverage < 10, generalGrade = Grade.A}
};
Console.WriteLine($"Overall Average: {overallAverage} - GRADE: {generalGrade}");
当我开始学习 C# 时,我决定使用 Dictionary, 但是一般等级的结果并不是预期的。对于任何平均成绩,总成绩返回 A。总体平均成绩正确返回。
【问题讨论】:
-
我看不到你在哪里使用你的字典。但考虑到你的成绩似乎在 0..10 范围内。所有这些值都小于 10(字典中的最后一个 Func)。此外,使用 Func 作为字典中的键似乎很奇怪。你想做什么?我怀疑一系列级联的 if/else if 语句会更有意义
-
您正在输出
generalGrade的值,它将采用您的枚举类型的默认值,因为您从未设置它,这将是第一个定义的条目 -Grade.A -
@Flydog57 我试图避免使用多个 if else 和 switch case 的替代方案,所以我错误地使用了 Dictionary
-
使用像
Func<...>这样的委托类型作为字典键类型不是一个好主意。
标签: c# dictionary