Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 并非所有代码路径都在类中返回值_C#_Class - Fatal编程技术网

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

C# 并非所有代码路径都在类中返回值,c#,class,C#,Class,我知道这个问题以前有人问过,但我无法解决这个问题 我想写一个类来检测并返回颜色,但我得到了这个错误:并不是所有的代码路径都在类中返回一个值 class Class1 { public System.Drawing.Color colordetector(string name) { if (name.Contains("blue") == true) { return System.Drawing.Color.Blue; } if (name

我知道这个问题以前有人问过,但我无法解决这个问题

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

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

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

故障条件:

字符串不包含
蓝色
绿色
红色

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

如果名为
name
的变量不包含单词blue、green和red,则方法不返回任何值


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

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

因此,如果if条件的计算结果均为true,则该方法将永远不会返回任何内容,因此它会向您发送此消息

一种解决方法是返回一些默认颜色,并在调用此方法的地方使用逻辑检查默认颜色


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

所以你有了一种方法。。并定义(在方法签名中)该类返回一个
System.Drawing.Color

现在,看看这个方法内部的代码。。。您正在进行三次
if
检查

但是如果
name
是“黑色”会发生什么呢?那么会发生什么?它不会通过这三个if检查,然后做什么

当没有找到颜色时,代码需要处理该场景

解决方案:

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

如果
name
的值不是蓝色、绿色或红色怎么办?@FarhadJabiyev:谢谢它解决了,我应该写一个“else语句”你也不需要在if语句中==true,contains()已经返回true/false你毫无疑问看到的其他问题将适用于你的情况。仅仅因为您返回的是
颜色
,并不会改变概念,也不会改变您的处境unique@user3694495欢迎你,伙计。我很高兴我提供了帮助。或者默认值应该是
Color.Transparent
?;)
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