C# 并非所有代码路径都返回值c';
我试图使用下面的代码并得到上面的错误。我绝对是一个新手,所以可能是一些简单的东西。我猜这与if(一个D准直器)有关。不过,我需要检查碰撞器是否存在,以使该语句正常工作C# 并非所有代码路径都返回值c';,c#,C#,我试图使用下面的代码并得到上面的错误。我绝对是一个新手,所以可能是一些简单的东西。我猜这与if(一个D准直器)有关。不过,我需要检查碰撞器是否存在,以使该语句正常工作 private bool CheckIndex(int cIndex, bool a2DCollider) { if (a2DCollider) { if (floatingObjects2D.Count <= cIndex)
private bool CheckIndex(int cIndex, bool a2DCollider)
{
if (a2DCollider)
{
if (floatingObjects2D.Count <= cIndex)
{
return true;
}
if (floatingObjects2D[cIndex] == null)
{
floatingObjects2D.RemoveAt(cIndex);
return true;
}
}
else
{
if (floatingObjects3D.Count <= cIndex)
return true;
if (floatingObjects3D[cIndex] == null)
{
floatingObjects3D.RemoveAt(cIndex);
return true;
}
}
}
private bool-CheckIndex(int-cIndex,bool-a2DCollider)
{
if(A2D准直器)
{
if(floatingObjects2D.Count问题在于if-else
块中的doubleif
-语句
如果a2DCollider
为true
但两个内部语句的条件为“false”,则函数不会返回任何内容
此外,如果a2DCollider
为false
,但如果-语句均为true
,则函数不会返回任何内容
您可以通过在if else
下添加return false
行轻松解决此问题,如下所示:
private bool CheckIndex(int cIndex, bool a2DCollider)
{
if (a2DCollider)
{
if (floatingObjects2D.Count <= cIndex)
{
return true;
}
if (floatingObjects2D[cIndex] == null)
{
floatingObjects2D.RemoveAt(cIndex);
return true;
}
}
else
{
if (floatingObjects3D.Count <= cIndex)
return true;
if (floatingObjects3D[cIndex] == null)
{
floatingObjects3D.RemoveAt(cIndex);
return true;
}
}
return false;
}
问题在于if-else
块中的doubleif
-语句
如果a2DCollider
为true
但两个内部语句的条件为“false”,则函数不会返回任何内容
此外,如果a2DCollider
为false
,但如果-语句均为true
,则函数不会返回任何内容
您可以通过在if else
下添加return false
行轻松解决此问题,如下所示:
private bool CheckIndex(int cIndex, bool a2DCollider)
{
if (a2DCollider)
{
if (floatingObjects2D.Count <= cIndex)
{
return true;
}
if (floatingObjects2D[cIndex] == null)
{
floatingObjects2D.RemoveAt(cIndex);
return true;
}
}
else
{
if (floatingObjects3D.Count <= cIndex)
return true;
if (floatingObjects3D[cIndex] == null)
{
floatingObjects3D.RemoveAt(cIndex);
return true;
}
}
return false;
}
你把事情弄得太复杂了,只需在代码末尾返回即可
private bool CheckIndex(int cIndex, bool a2DCollider)
{
if (a2DCollider && floatingObjects2D[cIndex] == null)
floatingObjects2D.RemoveAt(cIndex);
else if (floatingObjects3D[cIndex] == null)
floatingObjects3D.RemoveAt(cIndex)
return true;
}
你把事情弄得太复杂了,只需在代码末尾返回即可
private bool CheckIndex(int cIndex, bool a2DCollider)
{
if (a2DCollider && floatingObjects2D[cIndex] == null)
floatingObjects2D.RemoveAt(cIndex);
else if (floatingObjects3D[cIndex] == null)
floatingObjects3D.RemoveAt(cIndex)
return true;
}
如果'floatingObjects2D[cIndex]!=null'会发生什么?您需要一个else如果'floatingObjects2D[cIndex]会发生什么!=null'?您需要一个else您在if-else
语句中运行时,没有涵盖您为函数提供的参数的所有可能情况。您需要使用else
命令程序在不满足此条件时该怎么办:
private bool CheckIndex(int cIndex, bool a2DCollider)
{
if (a2DCollider)
{
if (floatingObjects2D.Count <= cIndex)
return true;
if (floatingObjects2D[cIndex] == null)
{
floatingObjects2D.RemoveAt(cIndex);
return true;
}
else
// return something
}
else
{
if (floatingObjects3D.Count <= cIndex)
return true;
if (floatingObjects3D[cIndex] == null)
{
floatingObjects3D.RemoveAt(cIndex);
return true;
}
else
// return something
}
}
在if-else
语句中运行时,您没有涵盖为函数提供的参数的所有可能情况。您需要使用else
命令告诉程序如果不满足此条件该怎么办:
private bool CheckIndex(int cIndex, bool a2DCollider)
{
if (a2DCollider)
{
if (floatingObjects2D.Count <= cIndex)
return true;
if (floatingObjects2D[cIndex] == null)
{
floatingObjects2D.RemoveAt(cIndex);
return true;
}
else
// return something
}
else
{
if (floatingObjects3D.Count <= cIndex)
return true;
if (floatingObjects3D[cIndex] == null)
{
floatingObjects3D.RemoveAt(cIndex);
return true;
}
else
// return something
}
}
如果a2DCollider
为true
和floatingObjects2D.Count>cIndex
,它应该返回什么?因为您只返回true,也许您想在所有其他情况下返回false?如果a2DCollider
为true
和floatingObjects2D.Count>cIndex
,它应该返回什么?因为您只返回如果返回true,那么在所有其他情况下,您可能打算返回false?是的:o),有人告诉我把return false放在Unity论坛的最后,效果很好。谢谢大家的快速回答。是的:哦),有人告诉我把return false放在Unity论坛的最后,效果很好。谢谢大家的快速回答。