并非所有代码路径都在类中返回值

时间:2015-03-14 12:12:14

标签: c# class

我知道这个问题之前曾被问过,但我无法解决这个问题

我想编写一个类来检测并返回颜色,但是我得到了这个错误:并非所有代码路径都返回类中的值

class Class1
{


    public System.Drawing.Color colordetector(string name)
    {

        if (name.Contains("blue") == true) { return System.Drawing.Color.Blue; }
        if (name.Contains("green") == true) { return System.Drawing.Color.Green; }
        if (name.Contains("red") == true) { return System.Drawing.Color.Red; }



    }//method colordetector



}//class1

4 个答案:

答案 0 :(得分:2)

让我们看看你的班级......

enter image description here

所以你已经创建了一个方法..并且已经定义了(在方法签名中)该类返回System.Drawing.Color

现在,查看里面的代码这个方法......你正在进行三次 if检查。

但如果name是“黑色”,会发生什么? ?接下来会发生什么?它不会通过这三个if-checks中的每一个然后做什么?

当颜色

时,代码需要处理场景。

解决方案:

  • 如果未找到/处理传入的颜色,则抛出异常。
  • 如果未找到/处理传入的颜色,则返回默认颜色。

答案 1 :(得分:1)

如果所有if条件都失败,则您的方法不会返回任何结果..

失败条件:

字符串不包含bluegreenred

public System.Drawing.Color colordetector(string name)
{

    if (name.Contains("blue")) { return System.Drawing.Color.Blue; }

    if (name.Contains("green")) { return System.Drawing.Color.Green; }
    if (name.Contains("red")) { return System.Drawing.Color.Red; }

       // < == ????? What if all failled ?? what to retun 
}//method colordetector

解决方案是返回您选择的color,表明发生了错误。

public System.Drawing.Color colordetector(string name)
{

    if (name.Contains("blue")) { return System.Drawing.Color.Blue; }

    if (name.Contains("green")) { return System.Drawing.Color.Green;    }
    if (name.Contains("red")) { return System.Drawing.Color.Red; }

     return System.Drawing.Color.Black; // <= Default to send Black if all conditions failled

}//method colordetector

答案 2 :(得分:0)

您的方法不会返回任何值,如果,名为name的变量不包含蓝色,绿色和红色中的一个。

您的方法的返回类型为System.Drawing.Color。因此,您应始终返回System.Drawing.Color值。

答案 3 :(得分:0)

因为您已指定了返回类型,并且返回语句似乎只放在if块中。

因此,如果你的if条件都没有计算为true,那么方法永远不会返回任何内容,因此它会给你这个消息。

一种解决方法是返回一些默认颜色,并有一个逻辑来检查调用此方法的默认颜色。

编辑:它不允许您返回null,因为它是一个不可为空的值类型