我正在学习C#。在下面的例子中,我相信我有正确的代码,但某处必须有一两个错误(可能更多)。请参阅以下代码:
public static string ReturnAgeGroup(int age)
{
if (age >= 65)
{
return "senior citizen";
}
if (age < 21)
{
return "minor";
}
if (age >= 21 & age < 65)
{
return "adult";
}
}
在 RetrunAgeGroup 下面有一条红色的波浪线,当我将鼠标悬停在它上面时,它说并非所有代码路径都返回值。为什么是这样?关于年龄的每种可能性都由条件涵盖。
是否还有其他错误我无法识别?
此致
答案 0 :(得分:1)
你可以这样做。
public static string ReturnAgeGroup(int age)
{
if (age >= 65)
{
return "senior citizen";
}
if (age < 21)
{
return "minor";
}
return "adult";
}
答案 1 :(得分:0)
IntellySence无法确定您变量100%传递到IF之一。
将上次if
替换为else
。
public static string ReturnAgeGroup(int age)
{
if (age >= 65)
return "senior citizen";
if (age < 21)
return "minor";
else
return "adult";
}
答案 2 :(得分:0)
您需要在if语句之外返回,或者删除其中一个案例并将其用作默认值。例如,如果我们默认为成年人,我们会这样做:
public static string ReturnAgeGroup(int age)
{
if (age >= 65)
{
return "senior citizen";
}
if (age < 21)
{
return "minor";
}
return "adult";
}
答案 3 :(得分:0)
删除最后一个,然后离开return "adult"
。
编译器在验证代码路径时不考虑条件。这就像路牌。如果它说,你可以向左或向右,那么你可以。编译器不在乎,如果在转弯之后那里有大量的垃圾和道路是无法通行的。类似这里。有三个条件,可能是也可能不是。因为在最后一个之后没有更多的代码,并且你的函数在所有情况下都会返回值,你会收到警告。