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